• Java面向对象——接口



    活动地址:CSDN21天学习挑战赛

    学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩;迟一天就多一天平庸的困扰。各位小伙伴,如果您:
    想系统/深入学习某技术知识点…
    一个人摸索学习很难坚持,想组团高效学习…
    想写博客但无从下手,急需写作干货注入能量…
    热爱写作,愿意让自己成为更好的人…

    接口

    比抽象类更高级的抽象,就是接口
    抽象类比类更高级的抽象
    interface 接口
    声明:使用interface关键字 public interface Ch02;
    JDK1.7之前:接口中只能定义抽象方法、静态的常量和静态方法,不能有方法,不能有属性
    JDK1.8及以后:接口中只能定义抽象方法,也不能有属性,但是可以有默认方法和静态方法,也可以有静态常量
    JDK7到JDK8:默认方法,静态方法。
    默认方法:pubic default void info(){}
    接口中结构的特点:
    1.接口中的抽象方法默认是public abstract,通常省略
    2.接口中的常量默认public static final 省略
    接口中的结构必须是public
    接口可以被一个类实现,实现类 如果一个类实现了一个接口,他就需要重写所有的抽象方法
    比如说A类 implements接口,我们就是A是这个接口的实现类
    public class Cat extends Animal implements Biology{}
    这个Cat类就继承了Animal类同时实现了Biology接口 Cat类可以叫Animal子类 也可以叫Biology接口
    实现接口是可以多实现的,继承只能单继承
    优先选择接口解决问题
    面试题:继承抽象类和实现接口的异同
    继承:单继承 实现接口:多实现
    都需要重写所有的方法
    抽象类和接口的区别:
    继承:单继承 实现接口:多实现
    抽象类放的东西多,接口少
    接口存在的意义:约定
    面向接口编程:主写接口

    interface A{
        abstract void print1();
    }
    interface B extends A{
        abstract void print2();
    }
    class C implements B{
        public void print1(){
            System.out.print("Hello");
        }
        public void print2(){
            System.out.print("World");
        }
    }
    public class Print{
        public static void main(String[] args){
            B b=new C();
            b.print1();
            b.print2();
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    由于Java不支持多重继承,所以可以利用接口实现类似于多重继承的机制,同时规避了C++多重继承中存在很多歧义的问题,使代码更加简洁,逻辑清晰,安全可靠。一个类只能有一个直接父类,但是它可以同时实现多个按口,可以把接口理解为类,即实现了Java类的多重继承。
    Java接口和Java抽象类最大的一个区别,就在于Java抽象类可以提供某些方法的部分实现,而Java接口不可以,这大概就是Java抽象类唯一的优点吧,但这个优点非常有用。如果向一个抽象类里加入一个新的具体方法时,那么它所有的子类都一下子都得到了这个新方法,而Java接口做不到这一点,如果向一个Java接口里加入一个新方法,所有实现这个接口的类就无法成功通过编译了,因为你必须让每一个类都再实现这个方法才行,这显然是Java接口的缺点。

  • 相关阅读:
    风控模型黑箱可解释,试下这个方法来演示
    分享68个毕业答辩PPT,总有一款适合您
    Nodejs -- Express托管静态资源
    C++的类和对象(六):友元、内部类
    java计算机毕业设计-医院门诊分诊信息系统-源程序+mysql+系统+lw文档+远程调试
    vue+element项目创建步骤
    利用Spring Boot实现MQTT在物联网中的应用
    Echarts配置(二)
    K8S之Deployment控制pod
    使用 vscode 配置安装 clang-format
  • 原文地址:https://blog.csdn.net/weixin_49405762/article/details/126292149