java中的接口與繼承,接口的例子講解


 

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM