9.7 接口基本定义

demo1 接口简单基本定义

interface IMessage {// 定义接口
    public static final String INFO = "www.baidu.com";// 全局常量
    public abstract String getInfo();
}

class MessageImpl implements IMessage {// 实现了接口
    public String getInfo(){
        return "得到一个好消息!!";
    }
}

public class HelloWorld {
	public static void main(String args[]) {
        IMessage msg = new MessageImpl();
        System.out.println(msg.getInfo());
        System.out.println(IMessage.INFO);// 直接输出全局常量

	}
}

demo2 java类单继承的局限,在接口上得到了弥补

interface IMessage {
    public static final String INFO = "www.baidu.com";
    public abstract String getInfo();
}
interface IChannel {
    public abstract boolean connect();
}
class MessageImpl implements IMessage,IChannel {
    public String getInfo(){
        if(this.connect()){
            return "得到一个消息,有人胖了(不是我)";
        }
        return "通道创建失败,无法获取消息";
    }
    public boolean connect(){
        System.out.println("消息发送通道已经成功建立");
        return true;
    }
}

public class HelloWorld {
	public static void main(String args[]) {
        IMessage msg = new MessageImpl();
        System.out.println(msg.getInfo());
        //System.out.println(IMessage.INFO);// 直接输出静态常量
	}
}

demo3

interface IMessage {
    public static final String INFO = "www.baidu.com";
    public abstract String getInfo();
}
interface IChannel {
    public abstract boolean connect();
}
class MessageImpl implements IMessage,IChannel {
    public String getInfo(){
        if(this.connect()){
            return "得到一个消息,有人胖了(不是我)";
        }
        return "通道创建失败,无法获取消息";
    }
    public boolean connect(){
        System.out.println("消息发送通道已经成功建立");
        return true;
    }
}

public class HelloWorld {
	public static void main(String args[]) {
        IMessage msg = new MessageImpl();
        IChannel chl = (IChannel) msg;// 直接转型IChannel---因为msg是IMessage,IChannel接口的子类;
        System.out.println(chl.connect());
        //System.out.println(IMessage.INFO);// 直接输出静态常量
	}
}
  • Object类对象可以接收所以的数据类型,包括:基本数据类型,类对象,接口对象,数组。
  • 方法不写访问权限也是public,不是default,所以覆写的时候,只能使用public。

demo4

interface IMessage {
    public static final String INFO = "www.baidu.com";
    public abstract String getInfo();// 接口中abstract可以省略
}
interface IChannel {
    public abstract boolean connect();
}
abstract class DatabaseAbstract {
    public abstract boolean getDatabaseConnection();// abstract关键词不能省略
}
class MessageImpl extends DatabaseAbstract implements IMessage,IChannel {
    public String getInfo(){
        if(this.connect()){
            if(this.getDatabaseConnection()){
                return "【数据库消息】www.baidu.com";
            } else {
                return "数据库无法访问";
            }
        }

        return "【默认消息】" + IMessage.INFO;
    }

    @Override
    public boolean connect(){
        return true;
    }

    @Override
    public boolean getDatabaseConnection(){
        return true;
    }
}

public class HelloWorld {
	public static void main(String args[]) {
        IMessage msg = new MessageImpl();
        System.out.println(msg.getInfo());
	}
}
  • 虽然接口无法去继承一个父类,但一个接口却可以通过extends继承若干个父接口,此时称为接口的多继承.

demo5 接口的多继承

interface IMessage {
	public static final String INFO = "www.mldn.cn"; 			// 全局常量
	public abstract String getInfo() ;
}
interface IChannel {
	public boolean connect() ;								// 抽象方法
}

// extends在类继承上只能够继承一个父类,但是接口上可以继承多个---!!!!
// extends接口上可以多继承,类上不行!
interface IService extends IMessage,IChannel {					// 接口多继承
	public String service() ;									// 抽象方法
}

class MessageService implements IService {						// 三个接口子类
	@Override
	public String getInfo() {									// 方法覆写
		return IMessage.INFO ;
	}
	@Override
	public boolean connect() {								// 方法覆写
		return true ;
	}
	@Override
	public String service() {									// 方法覆写
		return "MLDN消息服务:www.mldn.cn" ;
	}
}
posted @   盘思动  阅读(20)  评论(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.....问题的解决
点击右上角即可分享
微信分享提示