北京北大青鳥校區(qū)解讀:Java接口的原理和作用

      北京北大青鳥校區(qū)學(xué)術(shù)部老師提供:

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

      1、JAVA多態(tài)接口動態(tài)加載實例

      用來計算每一種交通工具運行1000公里所需的時間,已知每種交通工具的參數(shù)都是3個整數(shù)A、B、C的表達式。現(xiàn)有兩種工具:(北京北大青鳥校區(qū)
      Car 和Plane,其中Car 的速度運算公式為:A*B/C
      Plane 的速度運算公式為:A+B+C。

      需要編寫三類:ComputeTime.java,Plane.java,Car007.java和接口Common.java,要求在未來如果增加第3種交通工具的時候,不必修改以前的任何程序,只需要編寫新的交通工具的程序。其運行過程如下,從命令行輸入ComputeTime的四個參數(shù),第一個是交通工具的類型,第二、三、四個參數(shù)分別時整數(shù)A、B、C,舉例如下:(北京北大青鳥校區(qū)
      計算Plane的時間:"java ComputeTime Plane 20 30 40"
      計算Car007的時間:"java ComputeTime Car007 23 34 45"
      如果第3種交通工具為Ship,則只需要編寫Ship.java,運行時輸入:"java ComputeTime Ship 22 33 44"
      提示:充分利用接口的概念,接口對象充當參數(shù)。
      實例化一個對象的另外一種辦法:Class.forName(str).newInstance();例如需要實例化一個Plane對象的話,則只要調(diào)用Class.forName("Plane").newInstance()便可。(北京北大青鳥校區(qū)
      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("運行時間:"+t+" 小時"); 
      32. } catch(Exception e) ...{ 
      33. System.out.println("class not found"); 
      34. } 
      35. } 
      36. }
      以前看過一個求形狀的題目就是有兩個圓形求交集現(xiàn)在定義了兩種情況問要是擴展大別的情況應(yīng)當怎么設(shè)計,想了很久不得其解,現(xiàn)在忽然覺得接口通殺矣~(北京北大青鳥校區(qū)

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

      可以將借口類型的參數(shù)作為方法參數(shù),在實際是使用時可以將實現(xiàn)了接口的類傳遞給方法,后方法或按照重寫的原則執(zhí)行,實際調(diào)用的是實現(xiàn)類中的方法代碼體,這樣便根據(jù)傳進屋的參數(shù)的不同而實現(xiàn)不同的功能。重要的是,當我以后徐要林外一個對象并且擁有接受說生命的方法的時候的時候,我們不必須原類,只需新的類實現(xiàn)借口即可。(北京北大青鳥校區(qū)
      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. } 
      28. }
      希望本文的介紹,能給你帶來幫助。(北京北大青鳥校區(qū)


       

      北大青鳥網(wǎng)上報名
      北大青鳥招生簡章
      主站蜘蛛池模板: 一区二区不卡视频在线观看| 乱中年女人伦av一区二区| 怡红院一区二区三区| 美女免费视频一区二区| 亚洲午夜一区二区电影院| 国产亚洲福利精品一区| aⅴ一区二区三区无卡无码| 中文字幕无线码一区2020青青| 最新中文字幕一区| 久久国产精品亚洲一区二区| 国产av熟女一区二区三区| 伊人久久精品无码av一区| 冲田杏梨AV一区二区三区| 精品国产一区二区三区久久 | 一区 二区 三区 中文字幕| 国产成人高清精品一区二区三区 | 美女视频免费看一区二区| 国模私拍福利一区二区| 精品国产一区二区三区久久| 一区二区三区免费视频观看| 国产日韩精品一区二区三区| 亚洲AV无码一区二区三区鸳鸯影院| 亚洲无圣光一区二区| 91video国产一区| 久久伊人精品一区二区三区 | 欧洲精品码一区二区三区免费看| 色综合久久一区二区三区| 影音先锋中文无码一区| 亚洲精品色播一区二区| 伊人无码精品久久一区二区| 亚洲熟妇无码一区二区三区| 秋霞日韩一区二区三区在线观看 | 国产成人片视频一区二区| 国产成人高清视频一区二区| 成人精品视频一区二区三区不卡 | 亚洲一区二区三区国产精品无码| 91午夜精品亚洲一区二区三区| 无码av免费毛片一区二区| 国产一区二区三区国产精品| 狠狠色婷婷久久一区二区三区| www一区二区三区|