1.接口的定义:接口就是抽象方法和全局常量的集合,Java中通过interface关键字来定义
对应代码如下:
interface IMessage{
public static final String MSG = "Hello World";//全局常量
public abstract void fun(); //抽象方法
}
注:子类若想实现接口,必须使用implements关键字来实现接口.同时,一个子类可以实现多个接口.
对应代码如下:
interface IMessage{
public static final String MSG = "Hello World";//全局常量
public abstract void fun(); //抽象方法
}
interface INews{
public abstract String getNews();
}
class Message implements IMessage,INews{
public void fun(){
System.out.println(IMessage.MSG);
}
public String getNews(){
return IMessage .MSG;
}
}
public class Test {
public static void main(String[] args) {
IMessage m = new Message();
m.fun();
INews news = (INews) m;
news.getNews();
}
}
注:对于接口的子类,必须覆写接口中所有的抽象方法.利用子类向上转型通过实例化子类得到接口的实例化对象
当子类既需要继承抽象类,又需要实现接口时,先用extends抽象类,然后implements接口.
class Message extends News implements IMessage
抽象类可以实现多个接口:
interface IMessage{
public abstract void fun(); //抽象方法
}
abstract class News implements IMessage{
public abstract void getNews();
}
class Message extends News{
public void getNews(){
System.out.println("I am a student");
}
@Override
public void fun() {
System.out.println("Hello World");
}
}
public class Test {
public static void main(String[] args) {
IMessage m = new Message();
m.fun();
News news = (News)m;
news.getNews();
}
}
注:一个接口可以extends 多个父接口
接口可以定义一系列内部结构,例如:内部普通类,内部接口等.其中,若使用static定义内部接口,相当于一个外部接口.
interface IMessage{
public abstract void fun(); //抽象方法
static interface Message{
public abstract void fun1();
}
}
class News implements IMessage, IMessage.Message{
public void fun(){}
public void fun1(){}
}
public class Test {
public static void main(String[] args) {
}
}