献给小白的笔记day9
1.1 final关键字
- 被final关键字修饰的类,不能被继承
- 被final关键字修饰的方法,不能被子类重写
- 被final关键字修饰的变量,不能被赋值
- final关键字不能和abstract关键字一起使用
1.2 接口
-
定义格式
修饰符 interface 接口 { // 自定义常量 // 抽象方法 // 默认方法(JDK8.0) // 静态方法(JDK8.0) // 私有方法(JDK9.0) } -
在Java 9+版本中,接口的内容可以有: 1. 成员变量其实是常量,格式: [public] [static] [final] 数据类型 常量名称 = 数据值; 注意: 常量必须进行赋值,而且一旦赋值不能改变。 常量名称完全大写,用下划线进行分隔。 2. 接口中最重要的就是抽象方法,格式: [public] [abstract] 返回值类型 方法名称(参数列表); 注意:实现类必须覆盖重写接口所有的抽象方法,除非实现类是抽象类。 3. 从Java 8开始,接口里允许定义默认方法,格式: [public] default 返回值类型 方法名称(参数列表) { 方法体 } 注意:默认方法也可以被覆盖重写 4. 从Java 8开始,接口里允许定义静态方法,格式: [public] static 返回值类型 方法名称(参数列表) { 方法体 } 注意:应该通过接口名称进行调用,不能通过实现类对象调用接口静态方法 5. 从Java 9开始,接口里允许定义私有方法,格式: 普通私有方法:private 返回值类型 方法名称(参数列表) { 方法体 } 静态私有方法:private static 返回值类型 方法名称(参数列表) { 方法体 } 注意:private的方法只有接口自己才能调用,不能被实现类或别人使用。 -
接口的注意事项:
- 接口因为没有构造方法,不能实例化
- 类和接口的关系
- 类和类的关系:单继承
- 类和接口的关系:多实现
- 接口和接口的关系:多继承
1.3 多态
- 多态:事物的多种形态
- 编译时类型,对象声明时的类型
- 运行时类型:对象在内存堆中的类型
- 当编译时类型和运行时类型一致的时候,称之单态(事物的单一的状态) 例如 Student s= new Student();
- 当编译类型和运行类型相同时,如Cat cat=new Cat();此时编译时声明的对象类型为Cat,运行时对象类型也为Cat,故而两种形态一致,所有被称为单态.
- 当编译时类型和运行时类型不一致的时候,称之多态(事物的多种的状态)例如:Animal a = new Dog();
- 当编译时的类型和运行时的类型不一致时,如Animal a=new Cat ();编译时声明的是Animal类型,运行时在内存堆new的确是Cat类型,故而两种类型不同,被称之为多态.
- 多态的前提条件:
- 存在继承关系的类型
- 存在方法的重写,若无重写,不会报错,但是没有实际意义
- 必须为父类new子类,也就是声明父类,new的是子类.
- 存在继承关系或者实现关系
- 要有方法重写(没有重写,不会报错,没有实际意义)
- 父类的引用指向子类对象
- 多态访问成员的特点:
- 通过多态访问非成员方法
- 通过多态形式访问的非成员方法,全部都是以父类中有的去访问,因为声明的是父类,虽然在内存堆new的是子类对象,但是因为声明类型故而只能访问父类中的元素.所有的访问数据必须以父类为准,如果访问的方法被子类所重写时,才会调用子类方法.
- 通过多态的形式访问非成员方法,和以前的单态的使用结果一模一样
- 通过多态的形式访问成员方法,先看父类中是否有这个方法
- 如果有,执行子类重写后的方法
- 如果没有,编译报错
- 多态的好处:将父类的类型作为方法的形参,调用方法时,只需要将子类对象声明成为父类传入方法中即可
163

被折叠的 条评论
为什么被折叠?



