• [Java基础]接口


    一.接口的使用

      1.关键字 interface implements

        

    interface TestInterface{
        
    }
    class TestClass implements TestInterface{
        
    }

        interface为接口的声明关键字,而implements则为类实现接口的关键字

      2.接口就是用来给实现类增加能力的,给这个类带来一些能力和一些约束,也能增加代码的可读性

    二.接口与类的异同

      1.在jdk1.8之后接口除了default方法和final方法后所有的方法都是公开抽象的,内部的变量也是公开的静态常量

      2.一个类能实现多个接口,一个接口能继承多个接口

      3.接口是不能有构造方法和构造块静态块的,它与抽象类一样无法被实例化,但都能声明引用,也能被编译成.class文件

      4.实现接口的类如果不是抽象类则需要重写该接口内所有的抽象方法

      5.实现接口和类的继承差不多,都是对一个类进行能力的补充和延展,还有一些特殊的接口如:Serializable里面什么也没有,但可以实现它用来实现一种标记的效果,具体实现可以由instanceof来确定

      6.接口里的方法在实现类内重写时规则和子父类内发生的重写一样,唯一不同的可能就是接口内的方法访问修饰符都是public的

    三.接口的多态

      1.因为接口和抽象类一样能被声明引用,所以接口和继承类一样都可以实现多态的使用:

        

    TestInterface test = new TestInterfaceImpl();

      这种与父类子类的多态一致,test指向的是实现类的实例,而且这个引用只能调用被重写的接口方法,属性,无法调用实现类内其他特有的属性方法

    四.接口匿名内部类的使用

      1.常见的如:Thread的接口Runnable:

      

    class Test {
        public static void main(String[] args) {
            Thread thread = new Thread(new Runnable() {
                public void run() {
                    System.out.println("我跑起来了");
                }
            });
            thread.start();
        }
    }

        这是在Java8之前比较常用的线程简单定义方法

    五.接口的回调

      1.其实回调与接口的多态和接口匿名内部类的使用都差不多,如下方的Computer类的例子:

    interface Usb{        //接口Usb的定义
        void server();
    }
    class ComputerA{      //使用匿名内部类
        
        public static void main(String[] args) {
            Usb usb = new Usb() {
                public void server() {
                    System.out.println("鼠标的接入...");
                }
            };
        }
    }
    class ComputerB{      //使用接口的多态
        Usb usb;
        public void use() {  //该方法是在外部定义了Usb接口的实现类后使用的方法,给Usb的引用usb指向一个实现类的实例,然后再通过这个use()方法调用这个引用指向的实例内的重写方法
            if(usb != null) {
                usb.server();
            }
        }
    }
  • 相关阅读:
    ASP.NET面试资料【六】
    让Google帮你托管AJAX库
    JavaScript:prototype属性使用说明【转】
    如何存储Session
    给HyperLink控件连接资源文件
    Atcoder Regular Contest 096 D Sweet Alchemy(贪心+多重背包)
    NOI2021 去不了记
    一个测试你的浏览器支持多少HTML5元素的网站
    json怎么读
    QT元件(QTableView、QSql*之类)的最好开在堆空间中用指针操作
  • 原文地址:https://www.cnblogs.com/Lzzycola/p/13414488.html
Copyright © 2020-2023  润新知