Gorilla带您学java之接口

接口

简单定义:
使用关键字 interface来定义接口
interface 接口名{
}
广义解释:相当于一个规范 需要人来遵守

接口中可以写:
1.抽象方法,并且可以省去 public abstract 两个关键字
2.静态常量 并且可以省去 public static final 三个关键字

然后我们来看一个简单的关于接口的demo

// 声明一个接口
interface InterA{
    // 静态常量
    int num = 10;
    // 抽象方法
    void fun();
}
// 规范:实现类的类名后缀 Impl
class InterAImpl implements InterA{
    // 实现接口中的抽象方法
    @Override
    public void fun() {
        System.out.println(num);
        System.out.println("我是实现类的fun");
    }
}

那么通过之前的学习,您一定会发现 抽象类其实和接口有类似,那么他们有什么不同呢

抽象类和接口的区别?
1.使用方式
        抽象类:继承 extends
        接口: 实现 implements

2.成员变量
        抽象类: 变量 常量
        接口:  常量 默认就是public static final 修饰

3.成员方法
        抽象类: 抽象方法 成员方法
        接口:   只能有抽象方法 还可以有静态方法 和默认方法

4.构造方法
        抽象类: 有构造
        接口:   没有

我们再来看看静态方法和默认方法吧

interface interF{
    // 抽象方法
    void fun1();
    // 静态方法
    public static void fun2() {
        System.out.println("static function");
    }
    // 默认方法.
    public default void fun3() {
        System.out.println("default function");
    }
}
class interFImpl implements interF{
    // 重写抽象方法
    @Override
    public void fun1() {

    }
    // 重写默认方法
    @Override
    public void fun3() {
        System.out.println("i'm classimpl default function");
    }
    // 静态方法
    public static void fun2() {
        System.out.println("i'm classimpl static function");
    }
    // 成员方法
    public void test() {
        // 调用接口中静态方法
        interF.fun2();

        // 调用接口中的默认方法
        interF.super.fun3();
    }
}

然后在main方法中测试一下

public static void main(String[] args) {
        // 调用接口的静态方法
        interF.fun2();
        interF f = new interFImpl();
        // 调用实现类中的静态方法
        interFImpl.fun2();
        interFImpl fImpl = (interFImpl)f;
        fImpl.fun3();
        fImpl.test();
    }

控制台将会打印

static function
i'm classimpl static function
i'm classimpl default function
static function
default function

猜你喜欢

转载自blog.csdn.net/qq_37113621/article/details/82261198