自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

詳細(xì)介紹Java接口的作用

開(kāi)發(fā) 后端
本文介紹的是JAVA接口的作用,希望對(duì)你有幫助,一起來(lái)看。

今天和同事好好的討論了java接口的原理和作用,發(fā)現(xiàn)原來(lái)自己的對(duì)接口的理解僅僅是局限在概念的高度抽象上,覺(jué)得好像理解了但是不會(huì)變化應(yīng)用其實(shí)和沒(méi)有理解差不多。以前看一個(gè)帖子說(shuō)學(xué)習(xí)一個(gè)東西不管什么時(shí)候都要帶著“這個(gè)東西是什么?”、“這個(gè)東西有什么作用?”和“這個(gè)東西怎樣用?”三個(gè)問(wèn)題,這三個(gè)問(wèn)題回答上來(lái)了說(shuō)明你對(duì)這個(gè)事物的理解達(dá)到了一定的高度。

今天還有一個(gè)比較深的經(jīng)驗(yàn)是要學(xué)習(xí)到知識(shí)就要多和人交流。就像以前某個(gè)管理人員說(shuō)得“要瘋狂的交流”。

現(xiàn)在對(duì)于今天學(xué)到的接口部分做一個(gè)詳細(xì)地總結(jié):

接口的概念其實(shí)并不難理解,接口關(guān)鍵字Interface,在使用時(shí)可以只定義函數(shù)體而不需要具體的實(shí)現(xiàn)。再類(lèi)的繼承過(guò)程中可以實(shí)現(xiàn)多個(gè)接口而取代了類(lèi)的多繼承。使用接口其實(shí)就有點(diǎn)像實(shí)現(xiàn)虛函數(shù)的調(diào)用一樣,用繼承接口的子類(lèi)實(shí)例化聲名得借口就可以通過(guò)接口調(diào)用子類(lèi)內(nèi)部接口定義的函數(shù)。使用這種接口方式編程,如果業(yè)務(wù)邏輯發(fā)生變化需要新增類(lèi)多方法,就可以再不改變?cè)瓉?lái)已經(jīng)寫(xiě)好的代碼基礎(chǔ)上新增一個(gè)類(lèi)來(lái)實(shí)現(xiàn)接口中定義的函數(shù)來(lái)實(shí)現(xiàn)。具體方法請(qǐng)看下面兩個(gè)例子:

1、JAVA多態(tài)接口動(dòng)態(tài)加載實(shí)例

用來(lái)計(jì)算每一種交通工具運(yùn)行1000公里所需的時(shí)間,已知每種交通工具的參數(shù)都是3個(gè)整數(shù)A、B、C的表達(dá)式?,F(xiàn)有兩種工具:

Car 和Plane,其中Car 的速度運(yùn)算公式為:A*B/C

Plane 的速度運(yùn)算公式為:A+B+C。

需要編寫(xiě)三類(lèi):ComputeTime.java,Plane.java,Car007.java和接口Common.java,要求在未來(lái)如果增加第3種交通工具的時(shí)候,不必修改以前的任何程序,只需要編寫(xiě)新的交通工具的程序。其運(yùn)行過(guò)程如下,從命令行輸入ComputeTime的四個(gè)參數(shù),***個(gè)是交通工具的類(lèi)型,第二、三、四個(gè)參數(shù)分別時(shí)整數(shù)A、B、C,舉例如下:

計(jì)算Plane的時(shí)間:"java ComputeTime Plane 20 30 40"

計(jì)算Car007的時(shí)間:"java ComputeTime Car007 23 34 45"

如果第3種交通工具為Ship,則只需要編寫(xiě)Ship.java,運(yùn)行時(shí)輸入:"java ComputeTime Ship 22 33 44"

提示:充分利用接口的概念,接口對(duì)象充當(dāng)參數(shù)。

實(shí)例化一個(gè)對(duì)象的另外一種辦法:Class.forName(str).newInstance();例如需要實(shí)例化一個(gè)Plane對(duì)象的話(huà),則只要調(diào)用Class.forName("Plane").newInstance()便可。

Java代碼:

  1. import CalTime.vehicle.all.Common;  
  2. import java.lang.*;  
  3. public interface Common ...{  
  4. double runTimer(double a, double b, double c);  
  5. }  
  6. public class Plane implements Common ...{  
  7. public double runTimer(double a, double b, double c) ...{  
  8. return (a+ b + c);  
  9. }  
  10. }  
  11. public class Car implements Common ...{  
  12. public double runTimer(double a, double b, double c) ...{  
  13. return ( a*b/c );  
  14. }  
  15. }  
  16. public class ComputeTime ...{  
  17. public static void main(String args[]) ...{  
  18. System.out.println("交通工具: "+args[0]);  
  19. System.out.println(" 參數(shù)A: "+args[1]);  
  20. System.out.println(" 參數(shù)B: "+args[2]);  
  21. System.out.println(" 參數(shù)C: "+args[3]);  
  22. double A=Double.parseDouble(args[1]);  
  23. double B=Double.parseDouble(args[2]);  
  24. double C=Double.parseDouble(args[3]);  
  25. double v,t;  
  26. try ...{  
  27. Common d=(Common) Class.forName("CalTime.vehicle."+args[0]).newInstance();  
  28. v=d.runTimer(A,B,C);  
  29. t=1000/v;  
  30. System.out.println("平均速度: "+v+" km/h");  
  31. System.out.println("運(yùn)行時(shí)間:"+t+" 小時(shí)");  
  32. catch(Exception e) ...{  
  33. System.out.println("class not found");  
  34. }  
  35. }  

以前看過(guò)一個(gè)求形狀的題目就是有兩個(gè)圓形求交集現(xiàn)在定義了兩種情況問(wèn)要是擴(kuò)展大別的情況應(yīng)當(dāng)怎么設(shè)計(jì),想了很久不得其解,現(xiàn)在忽然覺(jué)得接口通殺矣~

2、JAVA接口作為參數(shù)傳遞

可以將借口類(lèi)型的參數(shù)作為方法參數(shù),在實(shí)際是使用時(shí)可以將實(shí)現(xiàn)了接口的類(lèi)傳遞給方法,后方法或按照重寫(xiě)的原則執(zhí)行,實(shí)際調(diào)用的是實(shí)現(xiàn)類(lèi)中的方法代碼體,這樣便根據(jù)傳進(jìn)屋的參數(shù)的不同而實(shí)現(xiàn)不同的功能。重要的是,當(dāng)我以后徐要林外一個(gè)對(duì)象并且擁有接受說(shuō)生命的方法的時(shí)候的時(shí)候,我們不必須原類(lèi),只需新的類(lèi)實(shí)現(xiàn)借口即可。

Java代碼:

  1. import java.lang.*;  
  2. interface Extendbroadable ...{  
  3. public void inPut();  
  4. }  
  5. class KeyBroad implements Extendbroadable ...{  
  6. public void inPut() ...{  
  7. System.out.println(" hi,keybroad has be input into then mainbroad! ");  
  8. }  
  9. }  
  10. class NetCardBroad implements Extendbroadable ...{  
  11. public void inPut() ...{  
  12. System.out.println(" hi,netCardBroad has be input into then mainbroad! ");  
  13. }  
  14. }  
  15. class CheckBroad ...{  
  16. public void getMainMessage(Extendbroadable ext)...{  
  17. ext.inPut();  
  18. }  
  19. }  
  20. public class InterfaceTest01 ...{  
  21. public static void main(String []args) ...{  
  22. KeyBroad kb=new KeyBroad();  
  23. NetCardBroad ncb=new NetCardBroad();  
  24. CheckBroad cb=new CheckBroad();  
  25. cb.getMainMessage(kb);  
  26. cb.getMainMessage(ncb);  
  27. }  

希望本文的介紹,能給你帶來(lái)幫助。

【編輯推薦】

  1.  揭開(kāi)Java 語(yǔ)言中的IO系統(tǒng)的神秘面紗
  2. 詳細(xì)介紹java中的集合框架
  3. Java正則表達(dá)式應(yīng)用總結(jié)
  4. 為你介紹Java中引用類(lèi)型和原始類(lèi)型的區(qū)別
  5. 詳細(xì)解析Java中的main函數(shù)
責(zé)任編輯:于鐵 來(lái)源: 互聯(lián)網(wǎng)
相關(guān)推薦

2011-07-22 16:37:01

java接口

2011-07-22 13:00:46

java

2009-12-25 16:09:14

NGN用戶(hù)接入技術(shù)

2011-07-11 11:02:12

JAVA集合框架

2009-06-11 10:00:05

Java Socket

2011-07-22 17:41:02

java

2010-03-18 14:27:53

Java Thread

2011-07-21 13:51:38

java

2011-07-21 14:15:08

java

2010-03-18 18:20:34

Java Socket

2011-07-11 15:02:54

枚舉

2011-07-11 17:33:25

JAVA可移植性

2011-07-21 15:44:33

Java內(nèi)部類(lèi)

2021-05-29 07:16:13

JavaSerializabl接口

2011-06-09 11:23:18

JAVAIO

2011-07-04 10:32:37

JAVA

2011-07-22 16:50:05

JAVA

2011-07-22 14:55:20

多線(xiàn)程

2009-12-31 09:19:14

光纖接入網(wǎng)關(guān)器件

2011-06-08 15:45:41

字符串JAVA
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)