抽象类是一种模板模式.抽象类为所以子类提供了一个通用模板,子类可以通过这个模板基础上进行扩展
通过抽象类,可以避免子类设计的随意性.通过抽象类.我们就可以做到严格限制子类的设计,使子类之间更加通用
要点:
- 有抽象方法的类只能定义抽象类.
- 抽象类不能实例化,及不能用new来示例化抽象类.
- 抽象类可以包含属性,方法,构造方法.但构造方法不能用来new实例,只能用来被子类调用.
- 抽象类只能用来继承.
- 抽象方法必须被子类实现.
由于抽象类不能实例化对象,所以抽象类必须被继承,才能被使用.也是因为这个原因,通常在设计阶段决定要不要设计抽象类.
父类包含了子类集合的常见的方法,但是由于父类本身是抽象的,所以不能使用这些方法。
在Java中抽象类表示的是一种继承关系,一个类只能继承一个抽象类,而一个类却可以实现多个接口。
package abstractclass;
/**
* 抽象类
* 抽象类不能用来创建对象;
* 抽象方法必须为public或者protected(因为如果为private,则不能被子类继承,子类便无法实现该方法),缺省情况下默认为public。
* 如果一个类继承于一个抽象类,则子类必须实现父类的抽象方法。如果子类没有实现父类的抽象方法,则必须将子类也定义为为abstract类。
* @author mac
*
*/
public abstract class Animal {//缺省情况下默认为public
public abstract void shout();
public void breath(){}//抽象类里可以调有普通方法
}
class Cat extends Animal {
public void shout(){
System.out.print("喵喵喵..\n");
}
}
class Dog extends Animal{
public void shout(){
System.out.print("汪汪汪..\n");
}
}