抽象类 abstract关键字
Posted lovelingdu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了抽象类 abstract关键字相关的知识,希望对你有一定的参考价值。
}
关键字 :abstract
抽象类和普通类的区别是什么?
抽象类是不能被实例化的 也就是不能使用new关键字,普通类是可以实例化的。
例如:
abstract class GrandPa{ public void farm() {System.out.println("grandpa 的农场");} public void makeMoney() {System.out.println("grandpa赚钱");} public abstract void goToCollege() ; }
这时候new 一个GrandPa的对象就会出错。
如果一个类有抽象方法,那这个类必然是抽象类,反之 抽象类不一定有抽象方法。
定义一个抽象类的用途在哪里?
抽象的概念是不需要实际去做的,但是在实际应用中有两种场景用途:
1、父类某一个功能或者方法,需要子类强行去重写的。那么该方法必须是抽象的。
2、父类对于某一个方法,无法预知子类会怎么实现,那么该方法必须是抽象的。
例如:你的爷爷经营了一个农场,赚了钱,唯一一点是没有考上大学,之后你爷爷定义了一个方法,强行让你父亲去执行
abstract class Father extends GrandPa{ public void goToCollege() { System.out.println("Father 完成了父类的方法"); } public abstract void driverCar(); }
父亲完成了,考上大学了,则父亲成为基类(普通类),如果父亲未完成,也就是没有重写爷爷的goToCollege方法,那么父亲仍是抽象类
假设父亲考上大学了,却没有买车,定义driverCar方法让你去实现,那么你也得重写父亲的driverCar方法,否则你也成为抽象类。
class Son extends Father { public void driverCar() { System.out.println("Son 实现了Father的方法"); } }
总代码
package com.qf.bigdata.test; public class ConceptCar { //define 定义 public static void main(String[] args) { Son son=new Son(); son.farm(); son.makeMoney(); son.goToCollege(); son.driverCar(); } } abstract class GrandPa{ public void farm() {System.out.println("grandpa 的农场");} public void makeMoney() {System.out.println("grandpa赚钱");} public abstract void goToCollege() ; } abstract class Father extends GrandPa{ public void goToCollege() { System.out.println("Father 完成了父类的方法"); } public abstract void driverCar(); } class Son extends Father { public void driverCar() { System.out.println("Son 实现了Father的方法"); } }
看一下结果
再说一次抽象类的用途
定义一个抽象类的用途在哪里?
抽象的概念是不需要实际去做的,但是在实际应用中有两种场景用途:
1、父类某一个功能或者方法,需要子类强行去重写的。那么该方法必须是抽象的。
2、父类对于某一个方法,无法预知子类会怎么实现,那么该方法必须是抽象的。
以上是关于抽象类 abstract关键字的主要内容,如果未能解决你的问题,请参考以下文章