抽象
抽象(abstract):一个类中如果有一个抽象函数或者抽象变量,那么这个类也必须是抽象的(abstract)。
你可以将抽象理解为这是一个声明,如果子类继承父类,必须要实现父类的抽象函数或变量,除非子类也定义成抽象函数。抽象函数是没有对象的,抽象类只是一个概念。
就像定义一个鸟类,“鸟”是一个概念,没有实体。只有定义它的子类,如:麻雀,才可以有具体的对象。同时麻雀必须实现“鸟”类的所有抽象的概念,否则自己也得是抽象的。
还有一种情况:父类是抽象函数,子类不实现父类的抽象函数,同时定义自己也是抽象类,让子类的子类实现父类和子类所有的抽象函数。比如麻雀是:鸟类的雀形目,"目"应该是抽象的,没有实体,所有它应该继承鸟类的同时定义自己也为抽象类,然后定义一个麻雀类,继承雀形目,实现鸟类和雀形目的所有抽象函数。
鸟类
public abstract class bird {
public abstract void Printbird(); //有{}会报错
}
雀形目
public abstract class Passer extends bird {
public abstract void PrintPasser();
}
麻雀
public class sparrow extends Passer{
@Override
public void PrintPasser() {
System.out.println("this is PrintPasser");
}
@Override
public void Printbird() {
System.out.println("this is Printbird");
}
public static void main(String[] args) {
sparrow sp = new sparrow();
sp.Printbird();
sp.PrintPasser();
System.out.println(sp);
}
}