抽象类
抽象类的定义与使用
抽象类只是在普通类的基础上扩充了一些抽象方法而已,所谓的抽象方法指的是只声明而未实现的方法(即没有方法体)。所有抽象方法要求使用abstract关键字来定义,并且抽象方法所在的类也一定要使用abstract关键字来定义,表示抽象类。
简单来说:抽象类就是普通类的超集,只是比普通类多了一些抽象方法而已。
范例:定义一个抽象类
abstract class Person{
private String name ; // 属性
public String getName(){ // 普通方法
return this.name;
}
public void setName(String name){
this.name = name ;
}
// {}为方法体,所有抽象方法上不包含方法体
public abstract void getPersonInfo() ; //抽象方法
}
抽象方法:使用abstract关键字定义的只有方法声明没有方法体的方法。
抽象类的使用原则:
- 所有抽象类必须有子类(final与abstract关键字不能同时出现)
- 抽象类的子类必须覆写所有抽象方法(或者子类也是用abstract关键字,private(无法被覆写)与abstract(必须被覆写)不能同时出现)
- 抽象方法必须被覆写,抽象类无法产生实例化对象,但可以通过向上转型实例化。而且子类依然遵循对象实例化流程,先调用抽象类的构造方法而后在调用子类构造。抽象类还有单继承局限。
范例:使用抽