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" ;
}
}
相信坚持的力量,日复一日的习惯.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需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.....问题的解决