深入java多态

抽象类

abstract class Canine extends Animal{
}

用abstract标记类为抽象类,编译器就知道不管在哪里,这个类就是不能创建任何类型的实例。但是你还是可以用这种抽象的类型作为引用类型,这也是你当初为何要有抽象类型的目的。如:

Canine c ;
c = new Dog(); //可以  
c = new Canine(); //不可以,编译器不会让你这样。

抽象类除了被继承之外,是没有任何用途,没有值,没有目的的。

除了类之外,方法也是可以为abstract的。抽象的类代表此类必须要被extends过,抽象的方法代表此方法一定要被覆盖过。

抽象的方法没有实体:

public abstract void eat();

如果你声明一个抽象的方法,就必须将类也标记为抽象的。

抽象方法的意义: 当某些行为在没有特定的运行时不会有任何意义。可以使用抽象方法,尽管我们无法实现方法的内容,但还是可以定义出一组子类型共同的协议。其好处是多态,使得你可以使用父型作为方法的参数,返回类型。通过这个机制,你可以加入新的子型到程序中,却不必重写或修改处理这些类型的程序。所有子型都会有哪些抽象方法。

抽象的方法没有内容,它只是为了标记出多态而存在,这表示在继承树结构下的第一个具体类必须要实现全部的抽象方法。当然你可以继续使用abstract将实现的负担转化给下一层。

Comments !