亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

理解java中接口

2019-11-18 11:36:32
字體:
來源:轉載
供稿:網友
    好的面向對象編程要求類設計人員隱藏那些不需要類的使用人員了解的信息。對于 java 編程語言,這樣的訪問可以通過使用要害字 PRivate, protected, 和 public來控制。這些要害字控制類內部的變量和方法是否可見,但是不好的類設計導致太多的可見信息和方法沒有被很好的封裝。
封裝的一種方式是通過使用接口(Interface)實現的。接口提供一種途徑,使類隱藏其處理的特定事物的細節,僅對外公布它必須支持的屬性。對于編程所涉及的,你可以修改類的實現,而不修改它的調用,因為屬性本身沒有改變,修改的僅僅是類的實現。

    一個接口被經常用得到的地方是Collection Framework。這個框架定義了一組非常重要的接口,它們是由一組多個類實現的。通過僅僅研究主要的接口,你可以有效的把握整個框架,因為非凡的實現類一般不影響設計的整體。

    例如,List接口定義了一個有序的元素集合??捎玫貙崿F包括ArrayList和LinkedList,它們都實現了List接口。當你的程序需要處理List時,不必考慮它是ArrayList還是LinkedList,只要知道所選用的類的屬性即可。這個屬性就是接口。

通過實現類的接口,并且在類設計時僅對外公布接口,你就有效的封裝了類的定義,這樣后臺實現的變動將對系統其它部分的影響最小。

    以ArrayList和LinkedList為例。將ArrayList看作一個可增長的數組對象(指是存儲對象,而不是原始數據)。當類實現了List的全部接口時,它的特性在特定條件下是可以優化的。

    例如,假如你的程序是要隊列表中的數據進行頻繁的隨機訪問,(例如,顯示第3,12,2,和25項數據)ArrayList類提供對列表中每一個數據快速查詢??焖俨樵兪且栽诹斜碇虚g添加和刪除數據的速度為代價的。假如后一種行為是你需要的,那么LinkedList類是一個好的選擇。它提供快速的順序訪問、添加和刪除,但是,代價是慢速隨機查詢。

   在處理ArrayList和LinkedList時,有兩種方式創建對象:

List cityList = new ArrayList() ;

LinkedList peopleList = new LinkedList() ;

    兩個代碼段都是正確的,但是這兩行代碼之間存在的顯著的差別。第一行表示我們要創建一個ArrayList,但是我們只需要把它作為一個List來訪問。第二行正好相反。是,LinkedList項目被創建了,ArrayList也一樣。但是,聲明部分說明它只能作為LinkedList來訪問,這就數它的最大區別。

    理解接口真正變的重要是在這兩行代碼的用戶確定“查詢項目n”比在位置m處刪除(或添加)項目更為重要時。

    PeopleList變量被聲明為LinkedList類型。這不是它本身的問題,因為你研究的更深層次的內容,你將發現peopleList在任何地方都被作為LinkedList對象處理。在你對peopleList使用LinkedList特有的方法的同時,假如你想把它作為ArrayList來處理,將會出現問題。

List peopleList = new ArrayList() ;

     通過學習僅使用接口來處理任何對象,你將發現在設計完成之后修改實現,你需要修改的僅僅是聲明部分,除此之外,沒有任何代碼改動。這就是接口的絕妙之處。因為類的最初聲明是LinkedList,當類型變為List時意味著象addFirst或addLast這樣的方法是無效的,因為新的peopleList的類型是List,它沒有這些方法。

     這種基于接口設計的代碼,就像Collection Framework所向大家承諾的那樣,任何人編寫的代碼是以循環構造方式進行的,而無需知道使用的是哪個Collection。創建的類是被限制為提供接口的完全實現。除此之外,新代碼將不能被編譯。

     作為實例,下面的程序創建一組集合。每個集合提供一個系統定義的Iterator這樣集合的每個元素可以被訪問。這個iterator將被傳遞到幫助例程,在這里集合的獨立元素將被打印。

import java.util.*;

public class Interfaces {

public static void main(String args[]) {
Properties props = System.getProperties();
Set keySet = props.keySet();
dumpIterator(keySet.iterator());

List list = Arrays.asList(args);
dumpIterator(list.iterator());
}

private static void dumpIterator(Iterator itor) {
// System.out.println(itor.getClass().getName());
while (itor.hasNext()) {
System.out.println(">> " + itor.next());
}
System.out.println("----");
}
}

     類Iterator的類型是unknown,這正是接口的絕妙之處,而不是問題。真正的事實是iterator方法返回的是一個真實的Iterator對象。然而,dumpIterator通常提供接口的完全實現。

     假如你去掉dumpIterator中的println行的注釋,你將發現真實的iterator類名,對Properties是Hashtable.Enumerator而List是AbstractList.Itr。這個事實不必知道,也不會對你的程序有任何幫助。真正重要的是List和Properties的iterator方法所返回的任何對象,必須實現java.util.Iterator:hasNext, next和remove方法。沒有這三種方法中任何兩種,dumpIterator方法將永遠不能工作。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产国产精品人在线视| 国产成人在线播放| 国产69精品久久久久99| 久久精品国产清自在天天线| 国产精品99久久99久久久二8| 亚洲成人精品在线| 国产精品直播网红| 日本a级片电影一区二区| 91精品视频在线免费观看| 亚洲天堂网站在线观看视频| 久久99久久亚洲国产| 欧美在线激情视频| 欧美二区在线播放| 日韩男女性生活视频| 亚洲第一级黄色片| 蜜臀久久99精品久久久久久宅男| 午夜精品在线视频| 1769国内精品视频在线播放| 国产成人精品999| 日本久久久久亚洲中字幕| 亚洲级视频在线观看免费1级| 亚洲一区制服诱惑| 国产日韩综合一区二区性色av| 欧日韩在线观看| 国产成人激情视频| 欧美wwwwww| 亚洲www永久成人夜色| 久久久噜噜噜久久| 欧美成人sm免费视频| 国产一区二区激情| 91精品久久久久久久久久另类| 91精品国产高清久久久久久91| 欧美性猛交xxxx富婆弯腰| 欧美在线观看一区二区三区| 高清欧美一区二区三区| 欧美一区二区三区精品电影| 日韩精品视频中文在线观看| www.亚洲免费视频| 国产精品女人久久久久久| 国产自产女人91一区在线观看| 国产亚洲视频中文字幕视频| 欧美成人精品激情在线观看| 色久欧美在线视频观看| 成人羞羞国产免费| 在线视频一区二区| 日本在线精品视频| 在线观看中文字幕亚洲| 91欧美视频网站| 日本久久中文字幕| 日韩国产欧美精品一区二区三区| 久久91超碰青草是什么| 精品国产91久久久久久老师| 伊人久久久久久久久久| 日韩av电影在线播放| 欧美激情成人在线视频| 韩国美女主播一区| 亚洲www在线观看| 亚洲精品国产精品自产a区红杏吧| 国产欧美精品日韩精品| 精品国产老师黑色丝袜高跟鞋| 日韩av在线天堂网| 亚洲欧洲日产国码av系列天堂| 精品亚洲va在线va天堂资源站| 一区二区三区视频免费在线观看| 91探花福利精品国产自产在线| 精品中文字幕在线观看| 欧美日韩亚洲成人| 国产999精品视频| 国产第一区电影| 亚洲最大成人免费视频| 成人免费视频xnxx.com| 国产z一区二区三区| 国产精品美女久久| 国产精品扒开腿做爽爽爽视频| 中文字幕精品一区久久久久| 欧美一区二区三区免费观看| 国产精品视频最多的网站| 久久久国产视频91| 欧美在线不卡区| 欧美wwwxxxx| 国产美女高潮久久白浆| 爱福利视频一区| 国产精品丝袜一区二区三区| 中文字幕久热精品视频在线| 日韩免费观看av| 久久精品国产成人| 超碰日本道色综合久久综合| 欧美在线视频观看免费网站| 久久成人在线视频| 亚洲日本aⅴ片在线观看香蕉| 亚洲国产一区二区三区四区| 欧美黑人国产人伦爽爽爽| 国产经典一区二区| 国产aⅴ夜夜欢一区二区三区| 日韩精品中文字幕视频在线| 亚洲缚视频在线观看| 国产日韩精品入口| 欧美又大又粗又长| 国产精品久久综合av爱欲tv| 欧美日韩国产一中文字不卡| 26uuu亚洲伊人春色| 日韩欧美在线第一页| 国产成人一区二区三区| 国产精品视频免费在线| 亚洲理论在线a中文字幕| x99av成人免费| 51精品国产黑色丝袜高跟鞋| 欧美日韩国产丝袜美女| 色综合色综合网色综合| 日韩欧美在线字幕| 亚洲精品福利在线观看| 亚洲色图美腿丝袜| 久久久久久91| 欧美裸体xxxxx| 亚洲国产高清高潮精品美女| 欧美激情videos| 日本电影亚洲天堂| 日韩人在线观看| 萌白酱国产一区二区| 精品中文字幕视频| 国产精品99久久久久久久久久久久| 国产精品久久久久久av下载红粉| 日韩中文字幕在线播放| 国产精品久久久久久久美男| 97香蕉超级碰碰久久免费软件| 久久精品国产清自在天天线| 亚洲欧美在线一区| 国产午夜精品全部视频在线播放| 日韩电影网在线| 日韩精品极品视频免费观看| 欧美日韩国产999| 日韩视频第一页| 久久精品视频一| 国产精品吹潮在线观看| 亚洲精品色婷婷福利天堂| 国产精品jizz在线观看麻豆| 久久成人这里只有精品| 欧美激情中文字幕乱码免费| 成人国产在线视频| 成人网在线视频| 亚洲人成在线电影| 欧美成人亚洲成人日韩成人| 日韩在线视频免费观看| 亚洲欧美综合另类中字| 亚洲精品资源美女情侣酒店| 性金发美女69hd大尺寸| 狠狠躁夜夜躁人人爽超碰91| 日韩在线观看成人| 91香蕉亚洲精品| 亚洲一区亚洲二区亚洲三区| 久久在精品线影院精品国产| 性欧美暴力猛交69hd| 欧美日韩亚洲视频一区| 日本一区二三区好的精华液| 国产成人精品综合久久久| 国产精品国产亚洲伊人久久| 亚洲成色777777在线观看影院| 色吧影院999| 成人午夜激情免费视频| 国产精品国产三级国产aⅴ浪潮| 国产精品福利久久久| 亚洲国产精品嫩草影院久久| 搡老女人一区二区三区视频tv| 91精品国产91久久久久|