Java面向对象——接口

发布于:2023-01-21 ⋅ 阅读:(313) ⋅ 点赞:(0)


活动地址: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();
    }
}

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

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到