类的接口
① 接口是一个抽象类型,是抽象方法的集合;
② 接口可以实现类间多继承结构;
③ 接口内部只能定义只有共有的抽象方法和全局常量,没有构造方法;
④ 接口中的所有方法都需要在子类中实现。
接口的定义格式
[public] interface 接口名称
{
常量;//默认public static final
方法;//默认public abstract
}
在定义接口时,若没有修饰符public ,则该接口只能由同一个包中的类或接口引用。
接口的实现
[访问修饰符] class 类名 implements[接口列表]
{
public 成员函数;
}
注:类必须实现接口继承的全部方法。
package Test;
public interface A {
int a=1;
void showa();
}
public interface B extends A{
int b=2;
void showb();
}
public interface C{
int c=3;
void showc();
}
public interface D extends B,C{
int d=4;
void showd();
}
public class E implements D{
int e=5;
public void showa() {System.out.println("a="+a);}
public void showb() {System.out.println("b="+b);}
public void showc() {System.out.println("c="+c);}
public void showd() {System.out.println("d="+d);}
public void showe() {System.out.println("e="+e);}
}
public interface Test {
public static void main(String[] agrs) {
E ee=new E();
ee.showa();
ee.showb();
ee.showc();
ee.showd();
ee.showe();
}
}
接口的使用原则
由于接口里面存在抽象方法,所以接口对象不能直接使用关键字new进行实例化。接口的使用原则如下:
(1)接口必须要有子类,但此时一个子类可以使用 implements关键字实现多个接口;
(2)接口的子类(如果不是抽象类),那么必须要覆写接口中的全部抽象方法;
(3)若接口子类不实现全部成员方法,则必须将该类定义为 abstract抽象类。
(4)接口的对象可以利用子类对象的向上转型进行实例化
注:接口中默认是public修饰符,故子类方法覆写时也必须用public关键字。
接口的实际应用示例–指定标准
接口在实际应用中更多的作用是来指定标准的。
比如说”U盘和打印机都可以插在电脑上使用,因为他们都实 现了USB标准的口,对于电脑来说,只要符合USB接口标准的设备都可以插进来。
package InterfaceDemo;
interface USB{ // 定义了USB接口
public void start() ; // USB设备开始工作
public void stop() ; // USB设备结束工作
}
class Computer{
public static void plugin(USB usb){
System.out.println("== USB 设备工作 ==") ;
usb.start() ;
usb.stop() ;
}
}
class Flash implements USB{
public void start(){ // 覆写方法
System.out.println("U盘开始工作。") ;
}
public void stop(){ // 覆写方法
System.out.println("U盘停止工作。") ;
}
}
class Print implements USB{
public void start(){ // 覆写方法
System.out.println("打印机开始工作。") ;
}
public void stop(){ // 覆写方法
System.out.println("打印机停止工作。") ;
}
}
public class InterfaceUSB {
public static void main(String args[]){
Computer.plugin(new Flash()) ;
Computer.plugin(new Print()) ;
}
}
另:使用适配器实现接口方法很多,而有时子类只需实现少量方法——利用抽象类!
package InterfaceDemo;
interface Window{ // 定义Window接口,表示窗口操作
public void open() ; // 打开
public void close() ; // 关闭
public void activated() ; // 窗口活动
public void iconified() ; // 窗口最小化
public void deiconified();// 窗口恢复大小
}
abstract class WindowAdapter implements Window{
public void open(){} ; // 打开
public void close(){} ; // 关闭
public void activated(){} ; // 窗口活动
public void iconified(){} ; // 窗口最小化
public void deiconified(){};// 窗口恢复大小
}
class WindowImpl extends WindowAdapter{
public void open(){ System.out.println("窗口打开。") ; }
public void close(){ System.out.println("窗口关闭。") ; }
};
public class AdapterDemo{
public static void main(String args[]){
Window win = new WindowImpl() ;
win.open() ;
win.close() ;
}
}