9.8 接口定义加强

  • default,static不可作为主要的设计模式,这个只是补救措施。

demo1 接口中追加普通方法 接口定义方法加上default,子类实现就不是非得覆写了

interface IMessage {
    public String message();// 抽象方法,abstract省略,获取消息内容
    public default boolean connect(){// 加上default,不是非得继承的类再覆写
        System.out.println("建立MLDN订阅消息连接通道.");
        return true;
    }
}

class MessageImpl implements IMessage {// 实现接口
    public String message(){// 覆写抽象方法
        return "www.mldn.cn";
    }
}

public class HelloWorld {
    public static void main(String args[]){
        IMessage msg = new MessageImpl();// 通过子类实例化接口
        if(msg.connect()){  // 接口定义的default方法;
            System.out.println(msg.message());
        }
    }
}

demo2 接口里可以定义static方法,就可以通过接口直接调用了

interface IMessage {
    public String message();// 抽象方法,abstract省略,获取消息内容
    public default boolean connect(){// 加上default,不是非得继承的类再覆写
        System.out.println("建立MLDN订阅消息连接通道.");
        return true;
    }

    public static IMessage getInstance(){// 定义static方法,可以通过接口名称调用
        return new MessageImpl();//获得子类对象
    }
}

class MessageImpl implements IMessage {// 实现接口
    public String message(){// 覆写抽象方法
        if(this.connect()){
            return "www.baidu.com";
        }
        return "没有消息发送";
    }
}

public class HelloWorld {
    public static void main(String args[]){
        IMessage msg = IMessage.getInstance();// 实例化接口子类对象
        System.out.println(msg.message());// 调用方法
    }
}
posted @   盘思动  阅读(6)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
历史上的今天:
2022-06-10 nodejs 定时器
2022-06-10 nodejs 操作mysql数据库,简单示例
2021-06-10 密码至少8位,包括数字、大小写字母和特殊字符三种及以上
2020-06-10 正在连接 cn.archive.ubuntu.com (91.189.91.39)] [正在连接 security.ubuntu.co.....问题的解决
点击右上角即可分享
微信分享提示