面向对象进阶--接口2

JDK8开始接口中新增的方法

接口中可以定义有方法体的方法(默认、静态)。

使用默认方法的作用:解决接口升级的问题。

接口中默认方法的定义格式:

public default返回值类型 方法名(参数列表){}

接口中默认方法的注意事项:

  • 默认方法不是抽象方法,所以不强制被重写。但如果被重写,重写的时候去掉default关键字。
java 复制代码
package oop.a06interface;

public interface Inter {
    public abstract void math();
public default void show(){
    System.out.println("接口中的默认方法---show");
}
}
package oop.a06interface;

public class InterImpl implements Inter {
    @Override
    public void math() {
        System.out.println("实现类重写的抽象方法");
    }
}
package oop.a06interface;

public class Test {
    public static void main(String[] args) {
InterImpl ii=new InterImpl();
ii.show();
ii.math();
    }
}
  • public可以省略,default不能省略。

  • 如果实现了多个接口,多个接口中存在相同名字的默认方法,子类就必须对该方法进行重写。

java 复制代码
package oop.a06interface;

public interface InterA {
    public abstract void math();
public default void show(){
    System.out.println("InterA接口中的默认方法---show");
}
}
package oop.a06interface;

public interface InterB {
    public default void show(){
        System.out.println("InterB接口中的默认方法---show");
    }
}
package oop.a06interface;

public class InterImpl implements InterA ,InterB{
    @Override
    public void math() {
        System.out.println("实现类重写的抽象方法");
    }

    @Override
    public void show() {
        System.out.println("接口中的默认方法");
    }
}
package oop.a06interface;

public class Test {
    public static void main(String[] args) {
InterImpl ii=new InterImpl();
ii.show();
ii.math();
    }
}

接口中静态方法的定义格式:

public static返回值类型 方法名(参数列表){}

接口中静态方法的注意事项:

  • 静态方法只能通过接口名调用,不能通过实现类名或者对象名调用
java 复制代码
package oop.a07interface;

public interface Inter {
    public abstract void math();
    public static void show(){
        System.out.println("inter接口中的静态方法");
    }
}
package oop.a07interface;

public class InterImpl implements Inter{
    @Override
    public void math() {
        System.out.println("InterImpl重写的抽象方法");
    }

}
package oop.a07interface;

public class Test {
    public static void main(String[] args) {
Inter.show();

    }
}
    • public可以省略,static不能省略

JDK9中新增方法

接口中私有方法的定义格式:

格式1:Private 返回值类型 方法名(参数列表){}

格式2:private static 返回值类型 方法名(参数列表){}

接口的应用

1.接口代表规则:是行为的抽象。想要让哪个类拥有一个行为,就让这个类实现对应的接口就可以了。

2.当一个方法的参数是接口时,可以传递接口所有实现类的对象,这种方式称之为接口多态。

适配器设计模式

设计模式:是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性、程序的重用性。

适配器设计模式:解决接口与接口实现类之间的矛盾问题。

java 复制代码
package oop.a09interface;

public interface Inter {
    public abstract void meth1();
    public abstract void meth2();
    public abstract void meth3();
    public abstract void meth4();
    public abstract void meth5();
    public abstract void meth6();
    public abstract void meth7();
    public abstract void meth8();
    public abstract void meth9();
    public abstract void meth10();
}
package oop.a09interface;

public abstract class InterAdapter implements Inter {
    @Override
    public void meth1() {

    }

    @Override
    public void meth2() {

    }

    @Override
    public void meth3() {

    }

    @Override
    public void meth4() {

    }

    @Override
    public void meth5() {

    }

    @Override
    public void meth6() {

    }

    @Override
    public void meth7() {

    }

    @Override
    public void meth8() {

    }

    @Override
    public void meth9() {

    }

    @Override
    public void meth10() {

    }
}
package oop.a09interface;

public class InterImpl extends InterAdapter{
//需要用到哪个方法就重写哪个方法就可以了

    @Override
    public void meth5() {
        System.out.println("只要用第五个方法");
    }
}
相关推荐
lkbhua莱克瓦24几秒前
进阶-索引4-使用规则
开发语言·数据库·笔记·sql·mysql·使用规则
人工智能训练2 分钟前
冬日“冻”机无解?联想ThinkPad低温保护无法开机,双电池+BIOS放电终极攻略
java·服务器·ubuntu·docker·电脑·开机·电脑维修
自燃人~2 分钟前
10 亿条数据排序:外部排序与 10 路归并完整说明
java·面试
我命由我123458 分钟前
Android 控件 - 悬浮常驻文本交互(IBinder 实现、BroadcastReceiver 实现)
android·java·java-ee·android studio·android jetpack·android-studio·android runtime
未来之窗软件服务10 分钟前
幽冥大陆(九十二 ) 封装 PHP HTTP 请求的 —东方仙盟练气期
开发语言·http·php·仙盟创梦ide·东方仙盟
毕设源码-钟学长11 分钟前
【开题答辩全过程】以 基于JSP技术的健康信息网站的设计与实现为例,包含答辩的问题和答案
java·开发语言
m0_5981772312 分钟前
SQL(进阶-2)- 存储过程
java·数据库·sql
AI追随者12 分钟前
Python异步编程:深入理解asyncio核心原理与实战
开发语言·python·pycharm
醒过来摸鱼15 分钟前
redisson可重入锁
java·开发语言
至为芯15 分钟前
IP5330至为芯支持TYPE-C协议的3A充放电移动电源方案芯片
c语言·开发语言