一、类和实例
1. 类是具有相同特征的一类事物的抽象;
2. 实例是类的实例化,类的具体表现;
3. 定义类
i. public修饰一个类的时候,该类文件只能有一个public,但该文件依旧可以定义多个类;
ii. 非public修饰的类文件,可以有多个;
二、抽象类
1. 理解
i. 抽象类的抽象级别介于类和接口之间,他即表示一种规范,也为继承他的子类提供公共的方法;继承其的子类如果不实现其抽象方法,则该类也必须定义为抽象类;
ii. 抽象类的设计思想:模板类,为继承其的子类提供实现的模板,在其基础上做修改实现个性化;
2. 细节
i. 抽象类必须用abstract修饰,抽象类可以没有抽象方法,但一个类有抽象方法,则必须定义成抽象类(接口里面全是抽象方法);
ii. 抽象类不能被实例化,即使该类不包含抽象方法,也不能被实例化;
iii. 抽象类可以包含普通类的所有成员(field、function、构造函数、初始化块、内部类、枚举类);
iv. 抽象类只能被继承,抽象方法只能被重写;
v. 抽象方法没有方法体,举例:public abstract void showMsg();
三、接口
1. 理解
接口抽象级别最高,其不仅体现规范,而且还体现规范和实现分离的设计原则。
2. 细节
i. 接口通过extends可以有多个直接父类接口(逗号隔开),但是接口只能继承接口,不能继承类;
ii. 接口定义的是一种规范,实现其的子类必须遵守该规范,所以接口里面不能有构造函数和初始化块的定义;
iii. 接口里面的所有成员都是public的访问权限;
iv. 对于field而言,只能是常量,系统会默认赋予static和final两个修饰符;
v. 对方法而言,只能是抽象方法,系统会默认增加abstract来修饰方法,所以接口里面不能定义static方法;
vi. 实现接口和继承的效果一样,可以获得所继承的接口的所有field和方法,内部类和枚举类;
vii. 一个类实现一个或多个接口,必须完全实现接口里面定义的抽象方法,否则该类只能保留抽象方法,定义成抽象类;
viii. 接口和抽象类都不能被实例化;
|