接口(interface)
- 接口(Interface)以interface来声明。如果一个类只由抽象方法和全局常量组成,那么这种情况下不会将其定义为一个抽象类,而是定义为一个接口,所以严格的来讲接口属于一个特殊的类,在接口中只有抽象方法和全局常量,就连构造方法也没有。
- 定义一个接口
interface IMessage { //定义了一个接口
public static final String INFO="www.mldn.cn"; //全局变量
public abstract String getInfo(); //抽象方法
}
- 接口使用原则:
1.接口需要被子类实现(implements),一个子类可以实现多个父接口
2.子类(如果不是抽象类)那么一定要覆写接口中的全部抽象方法
3.接口对象可以利用子类对象的向上转型进行实例化
- 定义接口子类
interface IMessage { //定义了一个接口
public static final String INFO = "www.mldn.cn"; //全局变量
public abstract String getInfo(); //抽象方法
}
class MessageImpl implements IMessage { //实现接口
public String getInfo() {
return "得到一个秘密消息";
}
}
public class Demo {
public static void main(String[] args) {
IMessage msg = new MessageImpl() ;
System.out.println(msg.getInfo());
System.out.println(IMessage.INFO ); //直接输出全局常量
}
}
-
List item
-
抽象类与接口的区别
区别 | 抽象类 | 接口 |
---|---|---|
定义关键字 | abstract class 抽象类名称{} | interface 接口名称{} |
组成 | 构造,普通方法,静态方法,全局变量,普通成员,static方法 | 抽象方法,全局变量,普通方法,static方法 |
权限 | 可使用各种权限定义 | 只能使用public |
子类使用 | 子类通过extends关键字可以继承一个抽象类 | 子类使用implements关键字可以实现多个接口 |
两者关系 | 抽象类可以实现若干个接口 | 接口不允许继承抽象类,但允许继承多个父接口 |
- 抽象类和接口的使用条件(原则)
1.抽象类或接口必须定义子类
2.子类一定要覆写抽象类或接口中的全部抽象方法
3.通过子类的向上转型实现抽象类或接口的实例化
案例一
- 定义一个ClassName接口,接口中只有一个抽象方法getClassName();设计一个类Company,该类实现接口ClassName中的方法getClassName(),功能是获取该类的类名称;编写应用程序使用Company类。
interface IClassName { //按照要求定义接口
public String getClassName() ; //数据一定要返回
}
class Company implements IClassName {
public String getClassName() {
return “Company” ;
}
}
public class JavaDemo {
public static void main(String args[]) {
IClassName ica = new Company() ; //向上转型
System.out.println(ica.getClassName()) ;
}
}