1. 抽象方法
如果父类中一定含有某个方法,但如何实现并不能确定,这就应该是一个抽象方法。
如父类是图形,方法是计算图形的面积,因为每一种图形都有不同的面积计算公式,所以如何计算图形的面积不能确定,那么,这就是一个抽象方法。
2. 抽象方法和抽象类的定义
和C语言的虚类、虚函数作用相同。
抽象类:抽象方法所在的类,一定是抽象类。在class之前加abstract关键字
抽象方法:即加上abstract关键字,去掉大括号,不写内容,直接分号结束。(接口中也可以写抽象方法)
定义格式:
public abstract class 类名{
成员变量1;
成员变量2;
...
public abstract 返回值类型 方法名(参数列表);//抽象方法
...
public 返回值类型 方法名(参数列表){}//其他普通成员方法
}
3. 抽象方法和抽象类的使用
- 抽象类不能直接new对象,必须有子类继承抽象类。
- 子类必须覆盖重写父类所有的抽象方法(即去掉abstract关键字,加入方法体)。
- 然后创建子类对象使用
4. 注意事项
- 抽象类不能创建对象
- 抽象类可以有构造函数,但只是供子类构造方法调用进行父类成员变量初始化的。
- 抽象类不一定保护抽象方法。有抽象方法的一定是抽象类
- 抽象类的子类,必须覆盖重写抽象类的所有抽象方法。(快捷键:把光标放到子类类名报错的红线上,按 ALT+回车)
- 抽象类也可以多级继承。只要有一个抽象方法没有覆盖重写,就必须是抽象类,必须接着往下派生子类。只要所有的抽象方法都覆盖重写了,才不是抽象类,可以创建对象。