一、关键字
1、final
| 修饰类 |
修饰变量 |
修饰成员方法 |
| 该类为最终类,不能被继承 |
该变量为常量 |
该成员方法不能被重写 |
2、static
(1)、生命周期
随着类的加载而加载
(2)、特点
被本类所有对象共享
使用方式:类名.静态成员
在实例化对象前被加载
(3)、成员特点
静态方法中只能使用静态成员
非静态方法中可以使用静态成员也可以使用非静态成员
静态方法中不能使用this、super(因为此时对象还没有创建,先进内存的不能方位后进内存的)
二、抽象类
1、概念
抽象类之子类的共性,在抽象类中申明某些行为,子类去实现
//例子
public abstract class Person{
public abstract speak();//无方法体,该方法需要子类去重写
}
2、特点
抽象类不能直接创建对象(可以通过多态进行创建)
抽象类中可以没有抽象方法,也可以有非抽象方法
有抽象方法的一定是抽象类
抽象类的子类要么重写抽象类的所有抽象方法,要么也是个抽象类
3、成员特点
| 成员 |
备注 |
| 成员变量 |
可以为变量或者常量 |
| 成员方法 |
可以为抽象方法或者非抽象方法 |
| 构造方法 |
抽象类中的构造方法是为了子类初始化的时候调用来完成抽象类的成员初始化 |
4、注意
abstract不能与private和static一起使用,因为后面两种不能重写
三、接口
1、概念
接口是为了扩展在事物共性以外的行为。
public interface Play{
public abstract void Basketball();//接口中只能定义抽象方法
}
//实现类
public class Person implements Play{
public void Basketball(){
...
}
}
2、接口特点
1、接口不能直接创建对象
2、接口和类是实现关系
3、接口的实现类要么重写接口的所有抽象方法,要么是一个抽象类
4、接口可以多继承
3、成员特点
| 成员 |
备注 |
| 成员变量 |
只能是常量 |
| 成员方法 |
只能是抽象方法 |
| 构造方法 |
没有构造方法,因为接口成员变量是常量,不需要初始化 |
四、抽象类和接口
1、相同点
都不可以被实例化
2、不同点
| 类型 |
区别 |
| 成员变量 |
抽象类:变量、常量 接口:常量 |
| 成员方法 |
抽象类:抽象、非抽象 接口:抽象方法 |
| 构造函数 |
抽象类:有。构造函数是子类初始化的时候调用初始化抽象类成员 接口:无。接口不需要初始化,因为成员变量都是常量 |
| 设计理念 |
抽象类:子类的共性(子类 is 抽象类) 接口:扩展(实现类 like 接口) |
五、关系
1、类和类
单继承、多层继承
2、类和接口
单实现、多实现、多层实现
3、接口和接口
单继承、多继承
六、权限修饰符
| 权限修饰符 |
同包同类 |
同包(子类和无关类) |
不同包(子类) |
不同包(无关类) |
| public |
Y |
Y |
Y |
Y |
| protected |
Y |
Y |
Y |
|
| 默认 |
Y |
Y |
|
|
| private |
Y |
|
|
|