在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。
注意事项在最后
抽象类的概念:包含一个抽象方法的类就成为抽象类。
抽象方法:只是声明而未实现的方法称为抽象方法,抽象方法必须使用 abstract 关键字声明。
抽象类定格式:
abstract class 抽象类名称{
属性;
访问权限 返回值类型 方法名称(参数){ //普通方法
[return 返回值类型]
}
访问权限 abstract 返回值类型 方法名称(参数); //抽象方法
//注意:抽象方法没有方法实体!!!
}
代码样例:
abstract class A{ // 是定义了一个抽象类
public static final String FLAG = "CHINA" ; // 全局常量
private String name = "李兴华" ; // 定义一个普通的属性
public void setName(String name){
this.name = name ;
}
public String getName(){
return this.name ;
}
public abstract void print() ; // 定义抽象方法
};
从定义的角度来说,抽象类就是比普通类多了一个抽象方法,但是相对于普通类,抽象类不能实例化,必须由子类覆写抽象类中的全部抽象方法。
关于抽象类的注意事项:
- 抽象类不能用 final 关键字修饰,因为抽象类需要子类来覆写抽象方法
- 抽象类除了不能实例化对象之外,类的其它功能依然存在,成员变量、成员方法和构造方法的访问方式和普通类一样。
- 抽象类不一定拥有抽象方法,但是有抽象方法的类一定抽象类
- 抽象类有构造方法,抽象类也是类抽象类中也可存在属性,子类在实例化之前肯定要对父类进行实例化。
- 包含一个抽象方法的类一定是抽象类
- 抽象类和抽象方法都要使用abstract关键字修饰
- 抽象方法只需要声明不需要实现。
- 抽象方法必须要子类继承,子类如果不是抽象类,必须覆写抽象类中的所有抽象方法。