1.方法只有声明,没有具体实现时,该方法就是抽象方法,需要被abstract抽象画,只要含有抽象方法就是抽象类,所以也必须把类也用abstract修饰
格式:
abstract void f();
abstract class Instrument{ coding .....}
2.抽象类不能被实例化,因为其抽象的方法没有意义
3.抽象类的子类必须覆盖所有的抽象方法后才能实例化,否则导出类仍然是抽象类
4.疑点
(1) 抽象类也有构造函数,用于给子类对象进行初始化(虽然不能自己创建对象)
(2)抽象类中可以不定义抽象方法,只有类名为抽象的,目的就是不让这个类创建对象(如ATW适配器的对象,这个类只有方法体,没有方法内容)
(3)abstract不能喝那些关键字共存
(i)private:因为private私有化后,其子类继承不来,这就导致其子类永远是抽象类了,不能实例化
(ii)static:static修饰的方法调用不需要创建对象,类调用就可以,但是抽象方法没有内容,不能被调用
(iii)final:final修饰的方法不能覆盖,final修饰的类不能被继承,而抽象类必须继承后才能被实例化
5.抽象类与一般类异同点
相同点:都是用来描述事物
不同点:
(1)一般类有足够信息描述,抽象类信息描述不足
(2)一般类可实例化,抽象类不能实例化
(3)一般类中不可以定义抽象方法,抽象类中既可定义抽象方法,也可以定非抽象方法
(4)抽象类一定为父类,因为子类继承并实现后才能使用