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:直接用接口的實現類的實例,調用接口的方法。
