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() {
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本