抽象方法、抽象类
在Java中,abstract关键词用于修饰抽象方法和抽象类。
小结
1.抽象方法是只有方法声明没有方法体的特殊方法。
2.抽象类是包含1个或多个抽象方法的类,也可以一个都不包含。
3.抽象方法必须存在于抽象类中。从语法上看,抽象方法不在抽象类中实现,而是在派生的子类中实现。
4.如果子类没有实现所有继承而来的抽象方法,则该子类也必须是抽象的(由第3点和继承可推出) 。值得注意的是,若在父类中用private修饰抽象方法,则子类就只能是抽象类。
5.抽象类不能创建实例对象(可以反过来利用这一点),即:不能通过new来调用构造函数。
但却可以声明抽象类对象(对象引用),用来指向子类对象,为后面“接口的使用与多态”建立起基础。
然而在继承体系中,若父类为抽象类,子类在创建实例对象时,仍会最先调用到父类的默认构造函数,令系统分配存储空间,以防子类对象调用父类方法及变量时产生错误。
(系统会自动补充super()调用父类的默认构造函数。父类若有重载构造函数,则需显式定义默认构造函数即’无参构造’)
抽象类的意义
1.抽象→具体:
在同类对象所对应的类体系中,抽象类往往在类继承体系的顶层,这使得类的设计变得清晰。
2.父类“声名”,子类“实现”:
定义了抽象类后,就可以使用Java的多态机制,为类的体系提供通用的接口,即:(父类)一个方法,(子类)多种实现。