Java 接口

类的接口

① 接口是一个抽象类型,是抽象方法的集合;
② 接口可以实现类间多继承结构;
③ 接口内部只能定义只有共有的抽象方法和全局常量,没有构造方法
④ 接口中的所有方法都需要在子类中实现

接口的定义格式

[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() ; 
	} 
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值