欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Java之路---Day11(接口)

程序员文章站 2022-04-15 14:49:38
2019-10-25-23:22:23 目录 1.接口的概念 2.接口的定义格式 3.接口包含的内容 4.接口的使用步骤 5.继承父类并实现多个接口 6.接口之间的多继承 接口的概念 接口是指对协定进行定义的引用类型。其他类型实现接口,以保证它们支持某些操作。接口指定必须由类提供的成员或实现它的其他 ......

2019-10-25-23:22:23

目录

  1.接口的概念

  2.接口的定义格式

  3.接口包含的内容

  4.接口的使用步骤

  5.继承父类并实现多个接口

  6.接口之间的多继承


接口的概念

  接口是指对协定进行定义的引用类型。其他类型实现接口,以保证它们支持某些操作。接口指定必须由类提供的成员或实现它的其他接口。与类相似,接口可以包含方法、属性、索引器和事件作为成员,其中最终哟啊的内容就是其家中的抽象方法

接口的定义格式

  public interface 接口名称{

    接口内容

  }

接口包含的内容

  1.常量

1 package demopra.interface;
2 //定义一个接口
3 public interface interfacecontent01 {
4     //接口包含的内容(常量)
5     double pi = 3.141592654;
6 }

  2.抽象方法

1 package demopra.interface;
2 //定义一个接口
3 public interface interfacecontent02 {
4     //接口包含的内容(抽象方法)
5     public abstract void method();//(public abstract两个关键字可以省略)
6 }

  3.默认方法

    1.备注:接口当中的默认方法可以解决接口升级的问题

    2.接口的默认方法可以通过接口实现类对象进行直接调用

    3.接口的默认方法可以被接口的实现类进行覆盖重写

 1 package demopra.interface;
 2 /*
 3     格式:
 4         public default 返回值类型 方法名称(参数列表){
 5             方法体
 6         }
 7  */
 8 //定义一个接口
 9 public interface interfacecontent03 {
10     //接口包含的内容(默认方法)
11     public default void method03(){
12         system.out.println("这是一个默认方法");
13     }
14 }
 1 package demopra.interface;
 2 
 3 public class interfacecontentt03test implements interfacecontent03{
 4     public static void main(string[] args) {
 5         //创建实现类对象
 6         interfacecontentt03test ic = new interfacecontentt03test();
 7         //实现类对象直接调用接口的默认方法
 8         ic.method03();
 9     }
10 //    //实现类覆盖重写接口的默认方法
11 //    @override
12 //    public void method03() {
13 //        system.out.println("实现类覆盖重写接口的默认方法");
14 //    }
15 }

  4.静态方法

 1 package demopra.interface;
 2 /*
 3     格式:
 4         public static 返回值类型 方法名称(){
 5             方法体
 6         }
 7     提示:就是将abstract或者default换成static 即可,记得带上方法体{}
 8     注意事项:不能通过接口实现类对象来调用接口当中的静态方法,只能通过接口名称来调用
 9         格式:
10             接口名称.静态方法(参数);
11  */
12 //定义一个接口
13 public interface interfacecontent04 {
14     //接口包含的内容(静态方法)
15     public static void method04(){
16         system.out.println("这是一个静态方法");
17     }
18 }
 1 package demopra.interface;
 2 //创建一个接口的实现类
 3 public class interfacecontentt04test implements interfacecontent04{
 4     public static void main(string[] args) {
 5         //创建一个实现类对象
 6         interfacecontentt04test ic = new interfacecontentt04test();
 7         //错误写法,会报错
 8 //        ic.method04();
 9 
10         //正确调用方法
11         interfacecontent04.method04();//执行结果:这是一个静态方法
12     }
13 }

  5.私有方法

 1 package demopra.interface;
 2 /*
 3     为什么要用私有方法:
 4         我们需要抽取一个共有方法,用来解决两个默认方法之间重复代码的问题。
 5         但是这个共有方法不应该让实现类使用,应该是私有化的。
 6     私有方法的两种用法:
 7         普通私有方法:解决多个默认方法之间代码重复问题
 8             格式:
 9                 private 返回值类型 方法名称(参数列表){
10                     方法体
11                 }
12         静态私有方法:解决多个静态方法之间代码重复问题
13             格式:
14                 private static 返回值类型 方法名称(){
15                     方法体
16                 }
17  */
18 //定义一个接口
19 public interface interfacecontent05 {
20     //接口包含的内容(私有方法)
21     public static void method0501(){
22         system.out.println("这是一个普通私有方法1");
23         method05();
24     }
25 
26     public static void method0502(){
27         system.out.println("这是一个普通私有方法2");
28         method05();
29     }
30     //定义一个普通私有方法
31     private static void method05(){
32         system.out.println("aaaa");
33         system.out.println("bbbb");
34     }
35     //静态私有方法同理
36 }
 1 package demopra.interface;
 2 
 3 public class interfacecontentt05test {
 4     public static void main(string[] args) {
 5         //直接通过接口名调用
 6         interfacecontent05.method0501();
 7         interfacecontent05.method0502();
 8         //错误的写法,private不能直接调用
 9 //        interfacecontent05.method05();
10     }
11     //静态私有方法同理
12 
13     /*
14         结果:
15             这是一个普通私有方法1
16             aaaa
17             bbbb
18             这是一个普通私有方法2
19             aaaa
20             bbbb
21      */
22 }

接口的使用步骤

  1.接口不能直接使用,逆序有一个"实现类了"来"实现"该接口

    格式:

      public class 实现类名称 implements 接口名称{

        实现类内容

      }

  2.接口的实现必须覆盖实现接口中所有的抽象方法

    实现:去掉abstract关键字,加上方法体大括号

  3.创建实现类对象,进行使用

  备注:如果实现类并没有覆盖重写接口中所有的实现方法,那么这个实现类自己必须是抽象类

继承父类并实现多个接口

  使用接口的时候,需要注意:
    1.接口是没有静态代码块或者构造方法的。
    2.一个类的直接父类是唯一的,但是一个类可以同时实现多个接口。
      格式,
        public class myinterfaceimpl impl ements myinterfacea, myinterfaceb {
          //覆盖重写所有抽象方法
        }
    3.如果实现类所实现的多个接口当中,存在重复的抽象方法,那么只需要覆盖重写一次即可。
    4.如果实现类没有覆盖重写所有接口当中的所有抽象方法,那么实现类就必须是一个抽象类。
    5.如果实现类锁实现的多个接口当中,存在重复的默认方法,那么实现类一定要对冲突的默认方法进行覆盖重写。
    6.一个类如果直接父类当中的方法,和接口当中的默认方法产生了冲突,优先用父类当中的方法。

接口之间的多继承

  1.类与类之间是单继承的.直接父类只有一个。
  2.类与接口之间是多实现的。一个类可以实现多个按口。
  3.接口与接口之间是多继承的。
    注意事项
      1多个父接口当中的抽象方法如果重复,没关系。
      2.多个父接口当中的默认方法如果重复,那么子接口必须进行默认方法的覆盖重写, [而且带着default关键字]