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 @ 2023-06-10 16:15  盘思动  阅读(3)  评论(0编辑  收藏  举报