1.final关键字
-
final含义:最终的,不可改变的
-
final关键字:可以修饰类,方法,变量
- 被final关键字修饰的类,不能被继承
- 被final关键字修饰的方法,不能被子类重写
- 被final关键字修饰的变量,只能被赋值一次
- 如果是局部变量,无论是直接赋值初始化还是先定义后初始化,都只能被赋值一次
- 如果是实例变量,且先定义后初始化,需要在这个类中所有的构造器中进行赋值
- 如果是静态变量,且先定义后初始化,需要在这个类中的静态代码块中进行赋值
-
关键字的共存性
- final关键字和abstract关键字不可以同时修饰一个类
- final关键字和abstract关键字不可以同时修饰一个方法
- final关键字和interface关键字不可以同时修饰一个接口
- abstract关键字和static关键字不可以同时修饰一个方法
2.接口
-
接口:定义一组方法和数据标准的集合
-
接口的成员
-
自定义常量
[public] [static] [final] 数据类型 常量名 = 常量值; 注意事项: 1.常量名要求大写 2.在接口中常量定义不可以先定义后赋值
-
抽象方法
[public] [abstract] 返回值类型 方法名 ();
-
默认方法
[public] default 返回值类型 方法名 () {} 默认方法的注意事项: 1.当一个类同时继承和实现,且接口和父类中拥有同名方法,作为子类继承过来的父类的实例方法 2.当一个类同时实现多个接口,且多个接口拥有同名方法,作为子类需要重写这个同名的方法
-
静态方法
[public] static 返回值类型 方法名 () {} 注意事项: 1.实现类无法继承接口中的静态方法,所以无法通过实现类名.静态方法名进行调用,只能通过接口名.静态方法名进行调用
-
私有方法
private 返回值类型 方法名 () {} private static 返回值类型 方法名 () {}
-
-
类和接口关系
- 类和接口的关系:多实现
- 类和类的关系:单继承
- 接口和接口的关系:多继承
3.多态
- 多态:其实就是对象的多种形态
- 多态的前提条件
- 要有子父类继承关系或者实现类接口的实现关系
- 要有方法的重写(没有方法重写代码不会报错,但是这样多态没有实际意义)
- 如果是继承关系,父类的引用指向子类对象(父new子)
- 如果是实现关系,父接口的引用指向实现类对象(接口new实现类)
- 多态关系中成员特点
- 构造器
- 和以前创建子类对象是一样的,都是先初始化父类成员,再初始化子类
- 实例变量:
- 和以前变量的使用是一样的,对象名被什么数据类型所修饰最后调用的就在那个类中去找
- 实例方法
- 先看父类中的方法有还是没有,如果有执行子类重写的;如果没有,编译报错
- 构造器
- 多态的好处
- 将父类和父接口作为方法的形参类型