国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

漫談Java程序設(shè)計(jì)中的接口應(yīng)用

2019-11-18 11:02:51
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

  java語(yǔ)言提供了一種接口(interface)機(jī)制。這種接口機(jī)制使Java的面向?qū)ο缶幊套兊酶屿`活。我們可以用接口來(lái)定義一個(gè)類的表現(xiàn)形式,但接口不能包含任何實(shí)現(xiàn)。在《Thinking in Java》一書(shū)中,作者對(duì)接口有這樣的描述:“接口(interface)比抽象(abstract)的概念更進(jìn)了一步。你可以把一個(gè)接口看成是一個(gè)純的抽象類。”我認(rèn)為作者對(duì)接口的這一解釋再準(zhǔn)確不過(guò)了。

  理解并用好接口機(jī)制將幫助我們更好的把握J(rèn)ava這種面向?qū)ο蟮木幊陶Z(yǔ)言。下面我們來(lái)討論一下接口的使用規(guī)則以及相關(guān)的應(yīng)用。

  一、接口的定義及實(shí)現(xiàn)

   定義接口和定義類相似,只是要把 class要害字換為 interface。定義方法時(shí)只需要方法名,返回類型和參數(shù)列表,不能有方法體。接口中可以定義字段,這些字段都被暗指為 static 和 final,因此應(yīng)該根據(jù)需要先定好這些字段的值。例如:

public interface Flyable {
void fly();
}

public interface Talkable {
void talk();
}

public interface Message {
int MAX_SIZE = 4096;
String getMessage();
}
  上面定義的幾個(gè)接口中,F(xiàn)lyable 和 Talkable 只定義了一個(gè)方法,而 Message 里除了方法外還有一個(gè)字段 MAX_SIZE。可以看出這些接口只定義了類的表現(xiàn)形式,而不包含任何實(shí)現(xiàn),所以不能直接使用。要使用這些接口就需要有相應(yīng)的類去實(shí)現(xiàn)它們。實(shí)現(xiàn)接口時(shí)應(yīng)該先在類名后用 implements 要害字申明將要實(shí)現(xiàn)的接口,假如要實(shí)現(xiàn)多個(gè)接口,應(yīng)該用逗號(hào)將它們隔開(kāi),然后一一實(shí)現(xiàn)這些接口中定義的方法。如下面的例子:

public class Parrot implements Flyable, Talkable {

public void fly() {
System.out.}

public void talk() {
System.out.println("Hello! I am a parrot!");
}
}

public class TextMessage implements Message {
String message;

public void setMessage(String msg) {
message = msg;
if (message.length() > MAX_SIZE)
message = message.substring(0, MAX_SIZE);
}

public String getMessage() {
return message;
}
}
  在 Parrot(鸚鵡)例子中,我們用接口 Flyable 來(lái)表示飛行能力,Talkable 表示說(shuō)話能力,但它們并不包含具體實(shí)現(xiàn)。而 Parrot 同時(shí)具有這兩種能力,所以我們?yōu)?Parrot 類同時(shí)實(shí)現(xiàn)了 Flyable 和 Talkable 這兩個(gè)接口。同樣我們還可以定義一個(gè)Swallow(燕子)類,但燕子只有飛行能力,所以我們只需要為 Swallow 實(shí)現(xiàn) Flyable 就行了。因?yàn)樗鼈兏髯缘牡娘w行方法有所不同,所以它們有各自關(guān)于飛行的具體實(shí)現(xiàn)。

   另外,正因?yàn)橐粋€(gè)類可以同時(shí)實(shí)現(xiàn)多個(gè)接口,使得Java的面向?qū)ο筇匦宰兊梅浅l`活。運(yùn)用這種特性,我們可以實(shí)現(xiàn)類似C++語(yǔ)言中多繼續(xù)那樣的特性,甚至更靈活的一些特性。下面我們來(lái)討論一下接口在實(shí)際中的應(yīng)用。

  二、用接口來(lái)定義一些全局變量

   因?yàn)榻涌趦?nèi)的字段都是static和final的,所以我們可以很方便的利用這一點(diǎn)來(lái)創(chuàng)建一些常量。例如:

public interface Constants {
String ROOT = "/root";
int MAX_COUNT = 200;
int MIN_COUNT = 100;
}
  在使用時(shí)可以直接用Constants.ROOT這樣的形式來(lái)引用其中的常量。我們還可以用下面這種方法來(lái)創(chuàng)建初始值不確定的常量。

public interface RandomColor {
int red = Math.random() * 255;
int green = Math.random() * 255;
int blue = Math.random() * 255;
}
  其中red、green和blue的值會(huì)在第一次被訪問(wèn)時(shí)建立,然后保持不變。

QQ病毒 騰訊QQ空間代碼專題 PPT教程專題 ADSL應(yīng)用面面俱到 fireworks教程專題

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 长阳| 金坛市| 拜城县| 沙坪坝区| 嵊泗县| 剑川县| 丰顺县| 翼城县| 邳州市| 蓝田县| 怀来县| 耒阳市| 宜川县| 卓尼县| 西华县| 湄潭县| 贞丰县| 花垣县| 永康市| 彭水| 吴堡县| 商水县| 江都市| 长葛市| 绵竹市| 花垣县| 鄱阳县| 韩城市| 平湖市| 马关县| 上思县| 东明县| 迁西县| 东兰县| 平邑县| 象山县| 班玛县| 临清市| 湄潭县| 乳源| 汽车|