• Interface接口


    一、接口及作用

      接口是一个非常重要的概念,理解这个,先举一个实现生活中的实例。
      现在,电脑主板,有很多插槽,可用来插CPU、内存等。当CPU等元件需要更新换代升级时,只要将CPU单独更换就可以了,而不需要更换主板。其实,主板上的这些暴露在外的插槽,就可以理解为接口。


      接口就是对外暴露的规则,只要符合规则的CPU、内存,不论品牌、型号、规格,都可以安插使用。

      接口是程序的功能扩展。有了插槽,也就提高了主板的功能扩展性,比如内存不够用了,我们就可以换成内容最大的内存条,或再加新的内存条。

      接口降低了耦合性。有了规则,主板和CPU等元件的就分开了,可以分开生了。只要符合规则,元件就可以插入插槽进行使用。这样,主板厂商和CUP厂商之间的联系就少了。

    二、接口的定义格式

      class 用于定义类。
      interface用于定义接口。

      接口中常见的定义:常量、抽象方法

      常量:public static final

      方法:public abstract 

      接口中的成员都是public,而且这些修饰都是可以省略的,只要是interface,系统就会自动补足。

    三、接口的特点

      接口不能直接创建对象

      类与类之间是“继承extends”。(因为父类中有非抽象内容,可以直接拿过来用)

      类与接口之间是“实现implements”。(因为接口内的成员都是抽象的,子类要将父类中的成员全都实现后,才可使用)

      接口与接口之间是“继承extends”。

      接口可以被类多实现,即一个类可以实现多个类。这是对JAVA不支持多继承的一种转换形式。

    interface Inter {
        public static final int NUM = 3;
    
        public abstract void show();
    }
    
    class Test implements Inter // class是继承(因为父类中有非抽象内容,可以被子类调用)
                                // interface是实现(因为子类要全都将接口中的内容实例化后才能使用)
    {
        public void show() {
        }
    }
    
    public class InterfaceDemo {
    
        public static void main(String[] args) {
            Test t = new Test();
            System.out.println(t.NUM); // 对象可以调用成员
            System.out.println(Test.NUM); // 类可以调用成员。因为Test实现了Inter,相当于其中也有NUM
            System.out.println(Inter.NUM); // 接口可以调用成员
    
        }
    
    }

    多现实

    interface Inter {                    //第一个接口
        public static final int NUM = 3;
    
        public abstract void show();    
    }
    
    interface InterA {                    //第二个接口
        public abstract void method();
    }
    
    class Demo {
        public void myFunction() {
        }
    
    }
    
    // 类可以继承类同时实现多个接口,同时继承类。
    //因为接口中的方法没有方法主休,所以可以多实现,由子类任意定义。
    class Test extends Demo implements Inter, InterA 
    {
        public void show(){}    //复写接口内的所有方法
    
        public void method(){}    //复写接口内的所有方法
    }
    interface Inter {                    //第一个接口
        public static final int NUM = 3;
    
        public abstract void show();    
    }
    
    interface InterA {                    //第二个接口
        public abstract void show();
    }
    
    class Test extends Demo implements Inter, InterA 
    {
        public void show(){}  //两个接口内的方法同名时,实现多接口时只要复写一次即可
    }

    接口之间是继承

    interface A {                    //A有一个方法
        void methodA();
    }
    
    interface B extends A {            //B有两个方法
        void methodB();
    }
    
    interface C extends B {            //C有三个方法
        void methodC();
    }
    
    class D implements C{            //接口A继承B,B函数C,类D实现接口C,D中要复写3个方法
        public void methodA(){}
        public void methodB(){}
        public void methodC(){}
    }
    interface A {                    //A有一个方法
        void methodA();
    }
    
    interface B  {                  //B有一个方法
        void methodB();
    }
    
    interface C extends A、B {      //C有继承A、B
        void methodC();
    }        
  • 相关阅读:
    51 数据中重复的数字
    64 数据流中的中位数
    79. Word Search
    93. Restore IP Addresses
    547. Friend Circles
    Epplus Excel 导入 MSSQL 数据库
    用来更新服务的bat 脚本
    ASP.Net MVC 引用动态 js 脚本
    8、结构的构造器应该显式调用!!!(坑)
    Task 线程重用导致等待!
  • 原文地址:https://www.cnblogs.com/ibelieve618/p/6440654.html
Copyright © 2020-2023  润新知