抽象类
比如:狼和狗都有吼叫的行为,并且他们都是犬科动物,所以我们可以把他们具有的共性给抽象出来。
但是犬科如何叫,狼和狗是不一样的,所以必须由具体的子类的实现,他们的吼叫的行为不一样,这个是一个不具体的功能。
所以在Java中必须把这个类给标识出来,用abstract抽象来标识。
抽象类在描述事物的时候,没有足够的信息去描述一个事物,这时候该事物就是抽象事物。比如:计算机
1、如果一个方法被定义成了抽象方法,则该类必须定义为抽象类。
2、抽象类不可以创建实例,原因:调用抽象方法没有意义。
3、只有覆盖了抽象类中的所有抽象方法以后,其子类才可以实例化,否则,该子类还是一个抽象类。
抽象问题
1、抽象类一定是个父类吗?
是的,因为抽象类是不断的抽取而来的。
2、抽象类是否有构造函数?
有,虽然不能给自己的对象初始化,但是可以给自己子类的对象初始化。
抽象类与一般类的区别:
相同点
- 他们都是用来描述事物的。
- 他们之间都可以定义属性和行为
不同点
- 一般类可以用来描述具体的事物,但是抽象类描述事物的信息不具体
- 一般类可以创建对象,而抽象类不
3、抽象类是否可以不定义抽象方法?
是可以的,这个抽象类到底有什么意义呢?作用仅仅不让该类创建对象。
4、抽象关键字abstract不可以和那些关键字共存?
final、private、static