• 接口


    接口

     描述

      接口是功能的集合,同样可看做是一种数据类型,是比抽象类更为抽象的”类”。

      接口只描述所应该具备的方法,并没有具体实现,具体的实现由接口的实现类(相当于接口的子类)来完成。这样将功能的定义与实现分离,优化了程序设计。

      请记住:一切事物均有功能,即一切事物均有接口。

      接口它也是一种引用类型(和类,数组一样)

      是Java语言中一种引用类型,是方法的集合,如果说类的内部封装了成员变量、构造方法和成员方法,那么接口的内部主要就是封装了方法

      包含抽象方法(JDK 7及以前),

      默认方法和静态方法(JDK 8),

      私有方法(JDK 9)。

    接口的定义:

    public interface 接口名{
      //抽象方法
      //默认方法
      //静态方法
    }
    
    /**
     * 接口的定义格式
     */
    public interface MyInterface {
        //抽象方法
        public abstract void abs1();
        public abstract void abs2();
        //默认方法
        public default void d1(){
            System.out.println("d1....");
        }
        public default void d2(){
            System.out.println("d2....");
        }
        //静态方法
        public static void s1(){
            System.out.println("s1....");
        }
        public static void s2(){
            System.out.println("s2....");
        }
    }

      它与定义类方式相似,但是使用 interface 关键字。它也会被编译成.class文件,但一定要明确它并不是类,而是另外一种引用数据类型。

      

    接口的使用:

      它不能创建对象,但是可以被实现(implements ,类似于被继承)。一个实现接口的类(可以看做是接口的子类),需要实现接口中所有的抽象方法,创建该类对象,就可以调用方法了,否则它必须是一个抽象类。

    public class 实现类 implements 接口名{
            
    }
    接口的多实现
    Java中继承只能单继承,实现可以多实现
    格式:
        public class 实现类 implements 接口1,接口2,...{
            //1.实现类必须所有接口中的所有抽象方法
                注意:如果有相同的抽象方法,实现类只需要重写一次
            //2.实现类可以选择器重写所有接口中的默认方法
                注意:如果有相同的默认方法,实现类必须重写一次
            //3.实现类可以写自己的静态方法,但是不叫重写
                注意:如果有相同的静态方法,实现类也不需要重写
        }
    实现和继承的优先级问题
    Java中允许继承和实现同时存在
    格式:
        public class 子类/实现类 extends 父类 implements 接口1,接口2,...{
            //1.重写父类和所有接口中的所有抽象方法
            //注意:如果有抽象方法同名,实现类只需要重写一次
            //2.选择性重写父类中的正常方法和所有接口中默认方法
            //注意:如果父类中的正常方法和接口中默认方法相同了,不需要重写,
                    //实现类对象调用该方法时,优先调用父类中这个方法
            //3.无论父类和接口中是否有静态方法,静态方法是否重名,实现类都不需要重写
        }
    注意: 继承和实现同时存在时,继承的优先级高于实现!!
    接口的多继承
    a.类和类之间是继承关系,单继承!
    b.类和接口之间是实现关系,多实现!
    c.接口和接口之间继承关系,而且是多继承   
    格式:
        public interface 子接口 extends 父接口1,父接口2,...{
            //子接口不需要重写任何东西
            //注意:除非出现两个相同的默认方法,那么子接口需要重写一次
        }
    使用:
        public 实现类 implements 子接口{
            //此时实现类相当于同时实现了多个父接口
        }  
    接口中其他成员特点
    a.接口中没有变量,只有常量,且常量由三个修饰符修饰:public static final
    b.接口中没有构造方法,也不能创建对象
    c.没有静态代码块。   
    接口中的抽象方法,可以省略 public abstract
    接口中的常量,可以省略 public static final
    但是省略了不代表没有!!编译器会自动添加!!    
  • 相关阅读:
    Linux消息队列编程
    Leetcode 1332. 删除回文子序列(看完题解才恍然大悟!!!!!!!)
    c++ 继承关系中的虚函数表
    C++(17):filesystem
    Leetcode 1331. 数组序号转换
    new和malloc的区别
    简述三次握手和四次挥手
    Leetcode 1296. 划分数组为连续数字的集合(提供一种思路)
    Leetcode 1275. 找出井字棋的获胜者
    JZ060把二叉树打印成多行
  • 原文地址:https://www.cnblogs.com/xiaozhang666/p/12966084.html
Copyright © 2020-2023  润新知