extends 繼承類;implements 實現接口。
簡單說:
1.extends是繼承父類,只要那個類不是聲明為final或者那個類定義為abstract的就能繼承,
2.JAVA中不支持多重繼承,但是可以用接口來實現,這樣就要用到implements,
3.繼承只能繼承一個類,但implements可以實現多個接口,用逗號分開就行了 ,
比如 class A extends B implementsC,D,E
extends和implements有什么不同?
對於class而言,extends用於(單)繼承一個類(class),而implements用於實現一個接口(interface)。
interface的引入是為了部分地提供多繼承的功能。在interface中只需聲明方法頭,而將方法體留給實現的class來做。這些實現的class的實例完全可以當作interface的實例來對待。在interface之間也可以聲明為extends(多繼承)的關系。
注意:一個interface可以extends多個其他interface。
接口實例:
例子1:
一共包括4個類,分別是CAR.java,BigCar.java,TestCar.java,CarInterface.java。
CAR.java:
聲明一個接口,不實現方法,只聲明方法,接口不能實例化。
package com.su.callback; publicinterface CAR { void start(); void stop(); }
BigCar.java:
用BigCar類實現接口CAR,實現它的方法,也就是寫程序結構體。BigCar是能夠實例化的,BigCar的對象是Car型的。當你需要調用接口
CAR的方法的時候,需要用CAR的對象來調用CAR的方法,但是CAR又不能實例化,我們就可以用實現了CAR的BigCar的對象來調用CAR的方法。
package com.su.callback; publicclass BigCar implements CAR { @Override publicvoid start() { // TODO Auto-generated method stub System.out.println("bigcar start..."); } @Override publicvoid stop() { // TODO Auto-generated method stub System.out.println("bigcar stop!"); } }
TestCar.java:
用opeCar方法調用Car的方法。
package com.su.callback; publicclass TestCar { publicvoid operCar(CAR c) { c.start(); c.stop(); } }
TestInterface.java:
調用operCar方法,需要傳實參進去,實參需要是一個對象,對象是BigCar(實現了接口的類)的實例化對象。
package com.su.callback; publicclass TestInterface { publicstaticvoid main(String[] args) { TestCar tc=new TestCar(); BigCar bc =new BigCar(); tc.operCar(bc); } }
輸出結果:
bigcar start...
bigcar stop!
總結:當我們調用接口A的方法:Amethod()的時候,通過調用以接口為參數的函數:b(A a) 來調用接口的函數Amethod(),要想調用b,需要傳實參進去。
例子2:
//接口類:JK.java
package com.su.callback; publicinterface JK { // 接口中可以有幾個方法的聲明 publicvoid MethodA(); publicvoid MethodB(); }
//接口的實現類 ImplementJK.java
package com.su.callback; publicclass ImplementJK implements JK { @Override publicvoid MethodA() { // TODO Auto-generated method stub System.out.println("接口JK的MethodA實現。。"); } @Override publicvoid MethodB() { // TODO Auto-generated method stub System.out.println("接口JK的MethodB實現。。"); } }
//調用接口的方法的類DJK.java
package com.su.callback; publicclass DJK { publicstaticvoid main(String args[]){ ImplementJK implementJk=new ImplementJK(); implementJk.MethodA(); implementJk.MethodB(); } }
只調用MehtodA的時候,就只執行MethodA ,
總結:接口的對象可以調用接口的方法,接口的實現類的對象也可以調用接口的方法。
例子1:定義一個類TestCar,用這個類的方法(以接口為參數)調用接口的兩個方法,再用另外一個類TestInterface調用TestCar的一個方法達到調用接口的兩個方法的作用。
例子2:直接用接口的實現類的實例,調用接口的方法。