接口概念:
- 是Java语言中一种引用类型,是方法的集合,接口内部主要是封装了方法,包含抽象方法,默认方法,静态方法;
- 接口不能创建对象,但是可以被实现implements
- 类和接口的关系是实现关系,其中非抽象子类实现接口;
- 必须重写接口中所有抽象方法
- 继承了接口的默认方法,既可以直接调用,也可以重写;
- 静态方法只能被接口调用,无法重写;
- 接口多实现:
- 一个类的直接父类是唯一的,但是一个类可以同时实现多个接口。
格式: - public class MyInterfaceImpl implements MyInterfaceA, MyInterfaceB { // 覆盖重写所有抽象方法
} - 如果实现类所实现的多个接口当中,存在重复的抽象方法,那么只需要覆盖重写一次即可。
- 如果实现类没有覆盖重写所有接口当中的所有抽象方法,那么实现类就必须是一个抽象类。
- 如果实现类锁实现的多个接口当中,存在重复的默认方法,那么实现类一定要对冲突的默认方法进行覆盖重写。
- 一个类如果直接父类当中的方法,和接口当中的默认方法产生了冲突,优先用父类当中的方法
- 一个类的直接父类是唯一的,但是一个类可以同时实现多个接口。
- 接口特点:
- 没有构造方法,不能创建对象
- 没有静态代码块;
- 可以定义常量,其中值不可以改变,默认使用public static final修饰
final关键字
用于修饰不可更改内容,用于修饰类 方法和变量
/* final关键字代表最终、不可改变的。 常见四种用法: 1. 可以用来修饰一个类 2. 可以用来修饰一个方法 3. 还可以用来修饰一个局部变量 4. 还可以用来修饰一个成员变量 */ public class Demo01Final { public static void main(String[] args) { int num1 = 10; System.out.println(num1); // 10 num1 = 20; System.out.println(num1); // 20 // 一旦使用final用来修饰局部变量,那么这个变量就不能进行更改。 // “一次赋值,终生不变” final int num2 = 200; final int num3=300; System.out.println(num2); // 200 // num2 = 250; // 错误写法!不能改变! // num2 = 200; // 错误写法! // 正确写法!只要保证有唯一一次赋值即可 final int num3; num3 = 30; // 对于基本类型来说,不可变说的是变量当中的数据不可改变 // 对于引用类型来说,不可变说的是变量当中的地址值不可改变 Student stu1 = new Student("赵丽颖"); System.out.println(stu1); System.out.println(stu1.getName()); // 赵丽颖 stu1 = new Student("霍建华"); System.out.println(stu1); System.out.println(stu1.getName()); // 霍建华 System.out.println("==============="); final Student stu2 = new Student("高圆圆"); // 错误写法!final的引用类型变量,其中的地址不可改变 // stu2 = new Student("赵又廷"); System.out.println(stu2.getName()); // 高圆圆 //局部变量引用类型被final修饰后,只能指向一个对象,地址不能再次更改,但是不影响对象内部成员变量值得修改,代码如下: stu2.setName("高圆圆圆圆圆圆"); System.out.println(stu2.getName()); // 高圆圆圆圆圆圆 } }
匿名内部类
- 本质是一个待具体实现的父类或者父类接口的匿名的子类对象,
- 前提匿名内部类必须继承一个父类或者实现一个父接口;
第五章 函数
2023-12-05 21:56:04 38 阅读