抽象类:一个不是具体的功能,称为抽象功能. 一个类中如果有抽象方法,该类则称为抽象类
抽象类和抽象方法的格式:
抽象方法:public abstract void 方法名();
非抽象的方法必须有方法体
抽象类:abstract 类名 {}
抽象方法不能有方法体 public abstract void eat(); 不能有大括号
抽象类的特点:
A.抽象类和抽象方法必须用abstract关键字修饰
abstract class Animal {}
public abstract void eat();
B.抽象类中不一定有抽象方法, 有抽象方法的类必须定义为抽象类
C.构造方法: 可以有构造方法
用于子类访问父类数据时的初始化
D.抽象类不能实例化
因为他不是具体的
抽象类有构造方法,但是不能实例化
通过多态,实例化
抽象类的构造方法用于继承中子类访问父类时对父类初始化
E.抽象类的子类
a.如果不重写抽象方法,抽象类的子类是一个抽象类
b.重写抽象类的所有抽象方法, 该类是一个具体的类
抽象类的成员特点:
成员变量:可以是变量,也可以是常量
构造方法:有
用于子类访问父类时对父类数据初始化
成员方法:既可以是抽象方法,
也可以是非抽象的
抽象类的成员方法特性:
A:抽象方法:强制子类要做的事情
B:非抽象的方法: 子类继承的方法,提高了代码的复用性
抽象类的几个小问题:
A.一个类如果没有抽象方法,可以定义为抽象类
目的在于不让创建对象
B.abstract 不能与哪些关键字共存
private 冲突
private abstract void show ();
private修饰的方法不能被继承
final 冲突
final修饰的方法不能被重写
static 无意义
抽象方法没有方法体,而静态方法可以通过类名调用
调用没有方法体的方法无意义
|
|