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" ;
}
}
相信坚持的力量,日复一日的习惯.

浙公网安备 33010602011771号