抽象类
在定义Java方法时可以只给出方法头,而不必给出方法体:即方法的实现细节,这样的方法被称为抽象方法。
抽象方法必须使用关键字abstract修饰,包含抽象方法的类必须申明为抽象类。
Java语言规定:
子类必须实现其父类中所有的抽象方法,否则该子类也只能申明为抽象类
抽象类不能被实例化
抽象类主要是通过继承、再由其子类发挥作用的,其作用包括两方面:
代码重用:子类可以重用抽象类中的属性和非抽象方法
规划:子类中通过抽象方法的重写类实现父类规划的功能
抽象类的其他特性:
抽象类中可以不包含抽象方法,用于当一个类已经定义了多个更适用的子类时,为避免误用功能相对较弱的父类对象,干脆限制其实例化。
子类中可以不全部实现抽象父类中的抽象方法,但此时子类也只能申明为抽象类;
父类不是抽象类,但在子类中可以添加抽象方法,但子类需要声明为抽象类;
可以将引用类型变量(包括方法的形参)声明为抽象类的类型,多态性对于抽象类仍然适用
抽象类中可以声明static属性和方法,只要访问控制权限允许,这些属性和方法可以通过<类名>.<类成员>的方法进行访问。