1. 概念:抽象方法--抽取方法的声明,不做具体的实现。用abstract修饰
包含抽象方法的类。
注意:对于一个方法而言,方法后面的{}和;在一般情况下是不能共存的。
public void show() {
// 这是实现了的方法。只不过你的实现内容是空的
}
public abstract void show(); // 没有实现,它是抽象的。
类比构造方法没有返回值来记忆。
2.抽象类特点:
1:抽象方法和抽象类用关键字abstract表示。
2:有抽象方法的类一定是抽象类。
抽象类中不一定有抽象方法。
3:抽象类不能被实例化。如果想使用抽象类里面的功能,需要创建该类的(非抽象)子类对象,然后调用方法
4:如果一个类继承抽象类,那么
这个类要么本身也是抽象类。
这个类重写父类的所有抽象方法。
5:抽象类强制要求子类实现某些功能。
抽象类可以强制要求其子类必须完成某种功能,这样说,抽象类的功能就比普通类的功能强大了。
所以会在放弃继承的部分好处的前提下,使用抽象类。
3.抽象类的成员特点:
1.成员变量:可以是变量,也可以是常量
2.构造方法: 有构造方法。用来初始化父类的数据供子类使用的。
3.成员方法:可以有抽象方法。也可以有非抽象的方法。
抽象方法:强制要求子类实现某些功能的。
非抽象方法:供子类继承使用的,提高代码的复用性。
案例需求:
传智播客有两类老师:
基础班老师
属性:姓名,年龄
行为:讲课(JavaSE)
就业班老师
属性:姓名,年龄
行为:讲课(JavaEE)
由于讲课内容不一样,但是都有讲课的功能。
所以,我们把讲课抽取出来。定义一个Teacher类,强制要求其子类必须会讲课。
接着来再定义一个基础班老师继承Teacher,一个就业班老师继承Teacher,最后在另外一个类中测试两个不同老师的成员。
4.抽象关键字abstract不可以和哪些关键字共存
1.final:因为被final修饰的类不能被继承,被final修饰的方法不能被重写。
2.private:因为被private修饰的方法不能重写,但是abstract方法要求重写。
3.static:因为一个方法要是同时被static 和abstract修饰,那么这个方法就可以类名.方法名调用.
但是此方法是抽象的,调用也无意义,所以就导致static 和abstract不能共存. |
|