第五章 接口函数

  1. 接口概念:

    1. 是Java语言中一种引用类型,是方法的集合,接口内部主要是封装了方法,包含抽象方法,默认方法,静态方法;
    2. 接口不能创建对象,但是可以被实现implements
    3. 类和接口的关系是实现关系,其中非抽象子类实现接口;
      1. 必须重写接口中所有抽象方法
      2. 继承了接口的默认方法,既可以直接调用,也可以重写;
      3. 静态方法只能被接口调用,无法重写;
    4. 接口多实现:
      1. 一个类的直接父类是唯一的,但是一个类可以同时实现多个接口。
        格式:
      2. public class MyInterfaceImpl implements MyInterfaceA, MyInterfaceB { // 覆盖重写所有抽象方法
        }
      3. 如果实现类所实现的多个接口当中,存在重复的抽象方法,那么只需要覆盖重写一次即可。
      4. 如果实现类没有覆盖重写所有接口当中的所有抽象方法,那么实现类就必须是一个抽象类。
      5. 如果实现类锁实现的多个接口当中,存在重复的默认方法,那么实现类一定要对冲突的默认方法进行覆盖重写。
      6. 一个类如果直接父类当中的方法,和接口当中的默认方法产生了冲突,优先用父类当中的方法
    5. 接口特点:
      1. 没有构造方法,不能创建对象
      2. 没有静态代码块;
      3. 可以定义常量,其中值不可以改变,默认使用public static final修饰
  2. final关键字

    1. 用于修饰不可更改内容,用于修饰类 方法和变量

      
      /*
      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()); // 高圆圆圆圆圆圆
      
          }
      
      }
      
      
  3. 匿名内部类

    1. 本质是一个待具体实现的父类或者父类接口的匿名的子类对象,
    2. 前提匿名内部类必须继承一个父类或者实现一个父接口;

你可能感兴趣的:(Java,java,开发语言)