让你打开眼界的 —— 接口之间是可以实现多继承的 以及 接口数组 ——Java篇

接口之间是可以实现多继承的

在这里插入图片描述


每博一文案

听过这样一段话,每一个优秀的人都有一段沉默的时光
那一段时光是付出了很多努力,忍受了很多的孤独和寂寞
不抱怨,不诉苦,只有自己知道,而当日后,说起时,
连自己都能被感动的日子。
人生中会有很多的时刻,只想大哭一场,也许,是在白天喧闹的人群中,
却默然感到前未有的孤独。也许,是在夜深人静一个人的房间里,
忽然心上像被开了一枪,因为在人前总是故作坚强,若无其事的样子,坚强久了。
就背上了盔甲,带上了枷锁,脸上风轻云淡,表面如无其事,背后却偷偷流泪
自我疗伤。
写在脸上的便是沉默,他们不是生来就坚强,
而是习惯了一个人,面对所有一个人,死撑硬抗,余生很长 
                                             ——————   一禅心灵庙语


接口之间是可以实现多继承的

  • 接口之间可以实现多继承的,
interface D {

}

interface F {

}

interface G extends D,F {

}




public class Blog08 {
    public static void main(String[] args) {

    }
}


运行结果

在这里插入图片描述


  • 从运行显示的结果可以看到,接口之间的多继承是没有问题的
  • 同样因为接口继承了多个接口,所以当我们 实现该接口 的时候,需要把它所继承的接口中的所有 抽象方法进行重写 ,如果有一个 抽象方法 没有重写到的话,都是会报错的

interface D {
    void func1();  // 接口中的抽象方法默认是 public void 的

}

interface F {
    void func2();  // 抽象方法

}

interface G extends D,F {   // 接口的多继承接口
    void func3();  // 抽象方法

}




public class Blog08 implements G {
    @Override  // 重写 注解,错误提醒,人和编译器都可以理解的注释
    public void func2() {

    }

    @Override
    public void func3() {

    }

    public static void main(String[] args) {


    }
}
 

运行结果

在这里插入图片描述


  • 我们从运行的结果上看,可以发现,我们少写了一个 func1 的抽象方法,报了如上的错误,
  • 这里我们可以使用快捷键 + Ctrl +i ,对抽象方法的重写,补齐 func1 抽象方法的重写
interface D {
    void func1();  // 接口中的抽象方法默认是 public void 的

}

interface F {
    void func2();  // 抽象方法

}

interface G extends D,F {   // 接口的多继承接口
    void func3();  // 抽象方法

}




public class Blog08 implements G {

    @Override
    public void func1() {      // 补齐该抽象方法的重写

    }

    @Override  // 重写 注解,错误提醒,人和编译器都可以理解的注释
    public void func2() {

    }

    @Override
    public void func3() {

    }

    public static void main(String[] args) {


    }
}

运行结果

在这里插入图片描述


我们补齐了,相对应的 抽象方法的重写 ,就没有报错了

接口数组调用接口中的抽象方法

  • 只要有关的类 实现了对应的接口 ——> 我们就可以创建 接口数组 —— > 将有关实现该接口的类,作为该 接口数组中的元素 ——> 通过下标访问接口数组中的元素(类),调用 实现接口中的抽象方法例如:我们这里是:Chinese、English、French 都实现接口Talk ,都重写了,接口中的抽象方法 speak( ) ,既然都实现了同一个接口Talk我们就通过该接口创建一个以类的实例为元素的,接口数组 ,——> 再通过这个接口数组的下标,访问各自类中的重写的抽象方法
  • 具体的代码例子
package Blog0;


interface Talk {      // 接口

    void speak();    // 抽象方法 默认为 public void
}

class Chinese implements Talk{   // 实现接口 Talk 
    String language = null;
    public Chinese(String language) {
        this.language = language;
    }

    @Override
    public void speak() {         // 重写接口中 speak()的抽象方法
        System.out.println(this.language+": 你好世界");
    }
}

class English implements Talk {    // 实现接口 Talk
    String language = null;

    public English(String language) {    
        this.language = language;
    }

    @Override
    public void speak() {           // 重写接口中 speak()的抽象方法
        System.out.println(this.language+": Hello World");

    }

}

class French implements Talk {      // 实现接口 Talk
    String language = null;

    public French(String language) {
        this.language = language;
    }

    @Override
    public void speak() {            // 重写接口中 speak() 的抽象方法
        System.out.println(this.language+": Bonjour le monde");
    }
}


public class Blog09 {
    public static void main(String[] args) {
        Talk[] talks = new Talk[] {      // 创建接口数组,以类的实例作为数组元素
                new Chinese("汉语"),
                new English("英语"),
                new French("法语")
        };

        for (int i = 0; i < talks.length; i++) {
            talks[i].speak();
        }
    }

}

运行结果

在这里插入图片描述


最后:

限于自身水平,其中存在的错误,希望大家给予指教,韩信点兵——多多益善,谢谢大家,后会有期,江湖再见!

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值