final用来修饰赋初始值的变量,使其变成常量,例:
final int A=10; A的值永远都是10,不能发生变化
注意:变量必须有初始值,变量的名字都用大写 如果在一个类里,final int A 没有给初始值并且没有
报错,那么就一定在构造函数里给A赋值了
final修饰对象名,对象名指向的地址名不能改变,地址里存储的信息可以改变,例:
final Object A=new Object(); A这个对象名指向的地址不能改变,但是A的属性可以改变
final修饰类,这个类不能有子类 final修饰方法,方法不能被重写
修饰符顺序可以打乱,但是一般都是权限修饰符在最前面
一般情况下父类基类都不会创建对象,子类继承父类对象,一般创建子类对象
重写的方法中,父类的方法一般有用的,用super关键字在子类里调用
有时候子类重写的方法完全与父类的方法没有关系,这样写父类的方法体就没有意义了
这时候就要把父类描写成抽象类
abstract 抽象的
abstract 用来修饰类和方法,使得父类的方法体可以不写
1.有抽象方法的类一定是抽象类,抽象类不一定有抽象方法
2.抽象类不能创建对象,不能实例化
3.抽象类都要有子类去实现抽象的方法,不重写方法会报错
子类也是抽象类,则在孙子类(间接继承)要实现,也可以在子类实现,这样孙子类就不用写
4.抽象方法不能被final、static修饰
以后百分之80都是用接口
接口定义标准和规范
接口强调功能
关键字 interface 接口
把class替换成interface就是接口了
接口的特征(和类做对比)
1.用interface修饰
2.接口的变量都是常量,隐式的用public、static、final修饰修饰
3.接口的方法都是抽象方法,隐式的用public、abstract修饰
4.接口中没有代码快,没有构造函数
接口=常量+抽象方法
5.接口不能实例化对象
6.接口的实现类用关键字implements
7.实现类必须实现接口的抽象方法,或者这个类是抽象类
类与类之间用extends 类与接口之间用ipmlements 接口与接口直接用extends
8.一个接口可以继承多个接口,与类不同(类只能单继承)
public interface C extends A,B
9.一个类可以继承一个类的同时实现多个接口,先继承在实现
public class D extends C ipmlements A,B
10.接口强调功能,类强调从属关系
11.接口是标准和规范
jdk1.8的新内容
static修饰的方法可以有方法体
defualt修饰的方法也可以有方法体
接口的扩展
1.接口是标准和规范,提供服务,可接插性
2.一个类可以实现多个接口,比继承好用
3.接口支持多态
接口和抽象类
相同点:
都可以写抽象方法
子类都要实现父类的方法,或者子类是抽象类
都不能实例化
不同点:
接口没有构造函数
实现类可以实现多个接口,子类只能继承一个父类
接口强调功能,类强调从属
接口有10个方法,但是实例类只要实现2个方法
中间就用适配器
创建一个类,实现接口的10个方法,这个类作为其他业务类的基类。
创建类的时候都继承这个类,可以重写基类个某个或者多个方法,其他方法可以不用重写
这样就实现了适配