抽象模块的基础知识
抽象类的定义
用关键字abstract修饰的类称为抽象类,eg:
abstract class A{
…
}
抽象方法的定义
用关键字abstract修饰的方法称为抽象方法,eg:
abstract int min(int x,int y);
注意:对于抽象方法,只允许声明,不允许实现(没有方法体),而且不允许使用 final 和 abstract 同时修饰一个方法或类,
也不允许使用static修饰 abstract 方法,即抽象方法必须是实例方法。
抽象类中可以有抽象方法
抽象类中可以有抽象方法,也可以没有抽象方法,也可以有非抽象方法。而非抽象类中不可以有抽象方法。
如:下面的A类中的min()方法是抽象方法,max()方法是非抽象方法。
abstract class A{
abstract int min(int x,int y); //抽象方法
int max(int x, int y){ //非抽象方法
return x>y? x:y;
}
}
抽象类不能用new运算符创建对象
抽象类的子类
如果一个非抽象类是抽象类的子类,它必须重写父类的抽象方法,即去掉抽象方法的abstract修饰,给出方法体。
抽象类的对象作上转型对象
可以使用abstract类声明对象,尽管不能使用new 运算符创建该对象,但该对象可以成为 其子类对象的上转型对象,那么该对象就可以调用子类重写的方法。
抽象类的理解
1、抽象类可以抽象出重要的行为标准,该行为标准用抽象方法来表示。即抽象类封装了子类必须要有的行为标准。
2、 抽象类声明的对象可以成为其子类对象的上转型对象,调用子类重写的方法,即体现子类根据抽象类里的行为标准给出的具体行为。
所谓行为的标准,仅仅是方法的名字和方法的类型而已;
抽象类中的抽象方法,可以由子类去实现,即行为标准的实现由子类完成。