183/184继承父类并实现多个接口和接口之间的继承

继承父类并实现多个接口

使用接口的时候,需要注意:

1.接口是没有静态代码块或者构造方法的。

2.一个类的直接父类是唯一的,但是一个类可以同时实现多个接口。格式

public class MyInterfaceImpl implements MyInterfaceA,MyInterfaceB {/覆盖重写所有抽象方法}

3.如果实现类所实现的多个接口当中,存在重复的抽象方法,那么只需要覆盖重写一次即可

4.如果实现类没有覆盖重写所有接口当中的所有抽象方法,那么实现类就必须是一个抽象类。

5.如果实现类锁实现的多个接口当中,存在重复的默认方法,那么实现类一定要对冲突的默认方法进行覆盖重写。

6.一个类如果直接父类当中的方法,和接口当中的默认方法产生了冲突,优先用父类当中的方法。

复制代码
public interface Demo01Interface {

    //错误写法,接口不能有静态代码块
//    static{
//
//    }
    //错误写法,接口不能有构造方法
//    public method(){
//        
//    }
复制代码

 

接口之间的多继承

 

 

 

1.类与类之间是单继承的。直接父类只有一个。

 

2.类与接口之间是多实现的。一个类可以实现多个接口。

 

3.接口与接口之间是多继承的。

 

注意事项:

 

1多个父接口当中的抽象方法如果重复,没关系。

 

2.多个父接口当中的默认方法如果重复,那么子接口必须进行默认方法的覆盖重写,【而且带着defaul t关键字】

 

 

 

复制代码
public interface MyInterfaceB {
    
    public abstract void methodA();
    public abstract void methodCommon();

}
复制代码

 

 

 

复制代码
public interface MyInterfaceA {

    public abstract void methodA();
    public abstract void methodCommon();

}
复制代码

 

 

 

public interface MyInterface extends MyInterfaceA,MyInterfaceB{

   
}

 

复制代码
先看类与接口之间的关系:

1.类与类之间是单继承的,直接父类只有一个。

2.类与接口之间是多实现的,一个类可以实现多个继承。

3.接口与接口之间是多继承的。

我们来重点解释第三条。

举例:

    public interface MyInterface1 {
        public abstract void method1();
        public abstract void common();
    }

    public interface MyInterface2 {
        public abstract void method2();
        public abstract void common();
    }

    public interface MyInterface3 extends MyInterface1,MyInterface2{
        public abstract void method3();
    }

这个子接口当中一共有4个方法:

method1来源于接口1,method2来源于接口2,common来源于接口1和2,method3来源于自己。

注意事项:

1.多个父接口当中的抽象方法如果重复,没关系。

2,多个父接口当中的默认方法如果重复,那么子接口必须进行默认方法的覆盖重写,而且要带着default关键字,因为这是子接口,不是实现类。
复制代码

 

 

 

 

复制代码
父接口A

    package cn.itcast.day10.demo03;
     
    public interface MyInterfaceA {
     
        public abstract void methodA();
     
        public abstract void methodCommon();
     
        public default void methodDefault() {
            System.out.println("AAA");
        }
     
    }

父接口B

    package cn.itcast.day10.demo03;
     
    public interface MyInterfaceB {
     
        public abstract void methodB();
     
        public abstract void methodCommon();
     
        public default void methodDefault() {
            System.out.println("BBB");
        }
     
    }

接口与接口之间是多继承的,继承以上两个父接口

    public interface MyInterface extends MyInterfaceA, MyInterfaceB {  // 接口与接口之间的多继承
     
        public abstract void method();
     
    //    多个父接口当中的默认方法如果重复,那么子接口必须进行默认方法的覆盖重写
        @Override
        public default void methodDefault() {
     
        }
    }

两个父接口A、B的中有抽象方法重复,没有关系。但是默认方法重复,则需要在子接口中重写。

接口实现类,一个类实现多个接口:

    package cn.itcast.day10.demo03;
     
    public class MyInterfaceImpl implements MyInterface {
        @Override
        public void method() {
     
        }
        @Override
        public void methodA() {
     
        }
        @Override
        public void methodB() {
     
        }
        @Override
        public void methodCommon() {
     
        }
    }
复制代码
posted @   ja不会va  阅读(89)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
点击右上角即可分享
微信分享提示