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 @ 2022-07-05 09:08  ja不会va  阅读(98)  评论(0)    收藏  举报