接口

来源:互联网 发布:钱盾是什么软件 编辑:程序博客网 时间:2024/06/17 08:25

一、接口:
jdk1.8后进行了优化
1.优化后 可以写成员方法
① 静态方法
② 默认的方法
a.不能使用接口直接去调用 因为接口不能实例化对象出来
必须使用该接口类的实现类的对象去调用
b.默认方法在实现类中 不强制你必须重写
c.如果想调用接口类中 默认方法 可以使用
InterA.super.defaultFun();
接口名.super.默认方法名();

二、抽象类 和 接口 的区别:
1.成员变量
抽象类:可以是常量 和 变量
接口:常量
2.成员方法
抽象类:有成员方法 有抽象方法
接口:只能有 静态成员方法 抽象方法 默认方法
3.构造方法
抽象类:有构造方法
接口:没有构造方法

public class Demo01 {    public static void main(String[] args) {        // 调用接口中静态成员方法        InterA.staticFun();        // 调用接口中默认成员方法        InterA a = new InterAImpl();        a.defaultFun();         // 调用实现类的成员方法        // 向下转型        // 注意:必须先向上转型 才能够向下转型        InterAImpl aImpl = (InterAImpl)a;        aImpl.fun1();        // 调用本类中 静态方法        InterAImpl.staticFun();        InterA.staticFun();    }}
interface InterA{    // 抽象方法    public abstract void fun();    // 成员方法    public static void staticFun() {        System.out.println("我是接口静态成员方法 staticFun");    }    // 默认方法    public default void defaultFun() {        System.out.println("我是接口中默认的成员方法 defaultFun");    }}
class InterAImpl implements InterA{    @Override    public void fun() {        System.out.println("我是实现类的 抽象方法的实现");    }    // 重写接口类的 默认值    @Override    public void defaultFun() {        // 抽象的同时希望可以调到接口类的 默认方法        InterA.super.defaultFun();        System.out.println("我是实现类的 defaultFun()");    }    // 实现类中定义一个成员方法    public void fun1() {        System.out.println("我是实现类中的 成员方法 fun1()");    }    public static void staticFun() {        System.out.println("我是实现类的 静态方法 staticFun()");    }}
原创粉丝点击