nxmxx / blog

记录我的学习路程和我的进步
1 stars 0 forks source link

接口 #18

Open nxmxx opened 4 years ago

nxmxx commented 4 years ago

接口

  1. 接口定义: 接口就是一些公共规范标准,比如生活中的插头;

  2. 接口的定义基本格式 /*interface定义基本格式

    • 1.Interface类基本格式: *public interface MyInterFace { //.......
    • }
  3. 接口的抽象方法定义 .Interface抽象方法的定义

    • 格式:
    • public abstract 返回值类型 抽象方法名称 (参数列表);
    • 要求:
    • (1) public 和 abstract两个关键字是规定死的,但可以省略任意一个或全部省略。
    • (2) 抽象方法的三要素 返回值类型、参数列表、方法名 根据要求做
    • public interface MyInterFace {

    public abstract void interFaceAbstract(参数列表);

    }

  4. 接口的抽象方法使用 (1)Interface类 package cn.javase.video.study.InterFace;

/*interface定义基本格式

public class MyInterfaceabsimpi implements MyInterFace{

@Override
public void abs1() {
    System.out.println("1 Interface Abstrct");
}

@Override
public void abs2() {
    System.out.println("2 Interface Abstrct");
}

@Override
public void abs3() {
    System.out.println("3 Interface Abstrct");
}

@Override
public void abs4() {
    System.out.println("4 Interface Abstrct");
}

}

(3)Interface类的实现类的使用类 package cn.javase.video.study.InterFace;

public class InterFaceMain { public static void main(String[] args) { MyInterfaceabsimpi impi =new MyInterfaceabsimpi(); impi.abs1(); impi.abs2(); impi.abs3(); impi.abs4(); }

}

  1. 接口的默认方法定义

在接口已经定义好,实现类已经实现,并且正在使用中,现在需要升级Interface类,不能在Interface中直接加更新抽象方法,再去修改实现类及使用类,这时候就需要使用接口的默认方法来解决,在Interface类中添加接口默认方法(你要更新的功能),实现类不需要覆盖重写新添加的接口默认方法,直接在使用类中调用即可。 定义:解决Interface类升级问题的方法

  1. 接口的默认方法使用 1) Interface类 package cn.javase.video.study.InterFace; /*

    • 接口默认方法的使用
    • 1.默认方法的格式
    • public default 返回值类型 方法名(参数列表){ //方法体...
    • }
    • 注.public可省略,default不可省略。
    • 2.接口的默认方法写在Interface类中,在Interface类的实现类不用覆盖重写,直接在实现类的使用
    • 类中创建对象使用,若找不到,向上找接口。也可以在Interface类的实现类中覆盖重写。
    • */ public interface InterfaceDefaultMethod { //更新前以存在内容 public abstract void abstract1(); //更新时使用的接口默认方法 public default void abstract3(){ System.out.println("这是为升级更新添加的接口默认方法");

    } }

2) 实现类1 package cn.javase.video.study.InterFace;

public class InterfaceDefaultMethodShiXian implements InterfaceDefaultMethod { public void abstract1(){ System.out.println("Interface类抽象方法重写");

};

}

3) 实现类2 package cn.javase.video.study.InterFace;

public class InterfaceDefaultMethodShiXian2 implements InterfaceDefaultMethod{ public void abstract1(){ System.out.println("Interface类抽象方法重写");

};

}

实现类的实用类package cn.javase.video.study.InterFace;

public class InterfaceDefaultMethodMain { public static void main(String[] args) { InterfaceDefaultMethodShiXian shiXian = new InterfaceDefaultMethodShiXian(); shiXian.abstract1(); shiXian.abstract3(); System.out.println("-----------------------------"); InterfaceDefaultMethodShiXian2 shiXian2 =new InterfaceDefaultMethodShiXian2(); shiXian2.abstract1(); shiXian2.abstract3(); } }

  1. 接口的静态方法定义 1.默认方法的格式

    • public static 返回值类型 方法名(参数列表){ //方法体...
    • }
    • 注.public可省略,static不可省略。
  2. 接口的静态方法使用 接口静态方法的使用

    • 1.默认方法的格式
    • public static 返回值类型 方法名(参数列表){ //方法体...
    • }
    • 注.public可省略,static不可省略。

1) Interface类 package cn.javase.video.study.InterFace; /*

}

2) 实现类 package cn.javase.video.study.InterFace;

public class InterfaceStaticMethodShiXian implements InterfaceStaticMethod { //Interface类中的静态方法不需在实现类中覆盖重写,

}

3) 实现类的使用类 4) package cn.javase.video.study.InterFace;

public class InterFaceStaticMain { public static void main(String[] args) { // Interface类中的静态方法不需在实现类中覆盖重写,使用时在实现类的使用类中 // 直接使用“Interface类名称.静态方法”即可。 InterfaceStaticMethod.abstract4(); }

}

  1. 接口的私有方法的定义 (1) 问题描述:当我们在Interface类中,多个静态方法或者默认方法存在代码重复的情况,所以我们将重复的代码写在一个方法中,让使用它的静态方法或默认方法去调用他。但是存在一个问题,这个公共方法不能被实现类去覆盖重写,所以要使用java9中的私有方法去定义这个公共方法。 (2) 格式: 1) 静态方法 Private static 返回值类型 私有方法名称 (参数列表){ 方法体 } 2) 普通私有方法方法 Private 返回值类型 私有方法名称 (参数列表){ 方法体 }

  2. 接口的私有方法的使用 (1) 静态私有方法 静态私有方法:

    • private static 返回值类型 方法名(参数列表){ //方法体...
    • }

// 静态私有方法:

public static void abstract1() {
    System.out.println("静态方法1");
staticMethod1();
}

public static void abstract2() {
    System.out.println("静态方法2");
staticMethod1();
}

private static void staticMethod1() {
    System.out.println("AAAAA");
    System.out.println("bbbb");
    System.out.println("VVVVVV");
}

(2) 普通私有方法(默认私有方法) 普通私有方法:

// 普通私有方法 public default void abstract3() { System.out.println("静态方法1"); staticMethod(); }

public default void abstract4() {
    System.out.println("静态方法2");
    staticMethod();
}

private void staticMethod() {
    System.out.println("AAAAA");
    System.out.println("bbbb");
    System.out.println("VVVVVV");
}
  1. 接口的常量的定义和使用

  2. package cn.javase.video.study.InterFace; /*

    • 接口中的常量定义与使用
    • 1.定义:
    • (1)格式:
    • public static final 数据类型 常量名称 = 赋值;
    • (2)常量名称命名规则:
    • 大写子母,单词直之间并用"_"连接。
    • (3)备注:final关键使用时,就说明将不再改变,所以接口的成员变量(常量)是固定的
    • 2.注意事项
    • (1)public static final三个关键字可省略
    • (2)定义的常量必须赋值; *2.使用
    • 因为使用了static关键字,所以直接在实现类的使用类中使用“Interface类名称.常量名称”
    • */ public interface InterfaceConst { public static final int NUM_OFF_CLASS=112; }
  3. 继承父类并实现多接口

  4. 接口之间的多继承