编程语言
首页 > 编程语言> > Java基础之浅谈接口

Java基础之浅谈接口

作者:互联网

前言

一、接口

1.接口的概念

2.什么是实例字段

3.接口的特点

二、接口的实际使用

public interface InterfaceTest {
    int a = 0;
    public static final int b = 0;//public static final可以省略不写
    void sum1();
    public abstract void sum2();// public abstract可以省略不写
    static void test1() {
        System.out.println("static可以实现在接口中定义方法内容,此方法不推荐具体用法可自行学习,这也是Java8的新特性");
    }
    default void test2() {
        System.out.println("default可以实现在接口中定义方法内容,并且此方法没必要去类中实现");
    }
}
class Test1 implements InterfaceTest{
    @Override
    public void sum1() {
        System.out.println("此方法必须在类中去实现");
    }
    @Override
    public void sum2() {
        System.out.println("此方法必须在类中去实现");
    }
}
  1. 接口不是类,所以不可以使用new运算符实例化一个接口。x = new Comparable();❌
  2. 但是我们可以使用接口去声明一个变量 Comparable x;✔
  3. 我们可以使用接口变量去引用实现了这个接口的类
public static void main(String[] args) {
        InterfaceTest inter = new Test1();//跟多态差不多
        if(inter instanceof InterfaceTest) {//同样可以使用instanceof判断,这个肯定为true了
            inter.sum1();
            inter.sum2();
            inter.test2();
        }
    }

三、解决默认方法冲突

class Father {
    public void sum1() {
        System.out.println("我是父亲的sum1");
    }
    public void test2() {
        System.out.println("我是父亲的test2");
    }
}
class Son extends Father implements InterfaceTest{
    @Override
    public void sum1() {//在我们重写方法是不可以省略public
        System.out.println("此方法必须在类中去实现,我是儿子sum1");
    }
    @Override
    public void sum2() {
        System.out.println("此方法必须在类中去实现");
    }

    public static void main(String[] args) {
        InterfaceTest inter = new Son();
        if(inter instanceof InterfaceTest) {
            inter.sum1();//经过测试发现,和多态性一样,优先调用子类
            inter.sum2();
            inter.test2();//经过测试发现,这个default的情况是,父类优先
        }
    }
}

四、接口回调

五、结尾