抽象类(abstract)特点
(1)抽象类和抽象方法必须使用abstract关键字修饰
abstract class 类名 {};
public abstract void 方法名();
(2)抽象类不一定具有抽象方法,有抽象方法的类一定是抽象类或者接口
(3)抽象类不能实例化,如何进行实例化:
按照多态方式,由具体的子类进行实例化
(4)抽象类的子类
要么是抽象类
要么重写抽象类中的所有抽象方法
抽象类的成员特点
(1)成员变量,既可以是变量,也可以是常量,abstract不刻意修饰成员变量
(2)构造方法用于子类访问父类数据的初始化
(3)成员方法既可以是抽象的,也可以是非抽象的
抽象类的成员方法特性
(1)抽象方法,强制要求子类做的事情
(2)非抽象方法,子类继承的事情,提高代码复用性
一个抽象类如果没有抽象方法,可以定义为抽象方法,这么做只有一个目的,那就是不让其他类创建本类对象,交给子类完成
abstract不能和哪些关键字共存
(1)abstract和static
被abstract修饰的方法没有方法体
被static修饰的方法可以使用类名.调用,但是类名.调用抽象方法没有意义
(2)abstract和final
被abstract修饰的方法强制子类重写
被final修饰的不让子类重写
(3)abstract和private
被abstract修饰的方法是为了让子类看到并强制重写
被private修饰不让子类访问
class Abstract {
public static void main(String[] args) {
}
}
abstract class AnimalA{
public abstract void eat(){
System.out.println("猫吃鱼");
}
}
class CatA extends AnimalA{
public void eat(){
System.out.println("猫吃鱼");
}
}