大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 hot資訊 實例探究Java接口存在意義

實例探究Java接口存在意義

更新時間:2020-10-29 17:45:17 來源:動力節點 瀏覽1215次

我們試想一下,假如Java中沒有接口會怎么樣呢?一個類總歸是可以通過繼承來進行擴展的,這難道不足以我們的實際應用嗎?本文我們就來用實例一起來探究Java接口存在的意義


首先,我們要知道一個對象需要知道其他的一些對象,并且與其他的對象發生相互的作用,這是因為這些對象需要借住于其他對象的行為以便于完成一項工作。這些關于其他對象的知識,以及對其他對象行為的調用,都是使用硬代碼寫在類里面的,可插入性幾乎為0。如:鋼筆中需要鋼筆水,鋼筆水有不同的顏色:鋼筆水類:

package com.glmapper.demo.base;

/**

* 鋼筆墨水

* @author glmapper

*/

public class PenInk {

//墨水顏色

private String inkColor;

public String getInkColor() {

return inkColor;

}

public void setInkColor(String inkColor) {

this.inkColor = inkColor;

}

public PenInk(String inkColor) {

super();

this.inkColor = inkColor;

}

}

鋼筆中持有一個墨水類的對象引用:

package com.glmapper.demo.base;

/**

* 鋼筆類 繼承父類 筆

* @author 17070738

*

*/

public class Fountainpen extends Pen{

//引用持有

PenInk ink =new PenInk("black");

@Override

public void write(String cnt) {

System.out.println("鋼筆墨水顏色是:"+ink.getInkColor());

System.out.println("這是一支鋼筆寫的內容,內容是:"+cnt);

}

}


但是這種時候,我們需要換一種顏色怎么辦呢?就必須要對Fountainpen中的代碼進行修改,將創建PenInk對象時的inkColor屬性進行更改;現在假如我們有一個具體的類,提供某種使用硬代碼寫在類中的行為;現在,要提供一些類似的行為,并且可以實現動態的可插入,也就是說,要能夠動態的決定使用哪一種實現。一種方案就是為這個類提供一個抽象父類,且聲明出子類要提供的行為,然后讓這個具體類繼承自這個抽象父類。同時,為這個抽象父類提供另外一個具體的子類,這個子類以不同的方法實現了父類所聲明的行為。客戶端可以動態的決定使用哪一個具體的子類,這是否可以提供可插入性呢?改進之后的代碼:子類1:黑色墨水

package com.glmapper.demo.base;

/**

* 黑色墨水

* @author glmapper

*/

public class BlackInk extends PenInk{

public BlackInk() {

super("black");

}

}

子類2:藍色墨水

package com.glmapper.demo.base;

/**

* 藍色墨水

* @author glmapper

*/

public class BlueInk extends PenInk{

public BlueInk() {

super("blue");

}

}

鋼筆類引用:

package com.glmapper.demo.base;

/**

* 鋼筆類 繼承父類 筆

* @author 17070738

*

*/

public class Fountainpen extends Pen{

PenInk ink ;

//通過構造函數初始化PenInk ,PenInk由具體子類來實現

public Fountainpen(PenInk ink) {

this.ink = ink;

}

@Override

public void write(String cnt) {

System.out.println("鋼筆墨水顏色是:"+ink.getInkColor());

System.out.println("這是一支鋼筆寫的內容,內容是:"+cnt);

}

}

客戶端調用:

public static void main(String[] args) {

/**

* 使用黑色墨水子類

*/

Pen pen= new Fountainpen(new BlackInk());

pen.write("我是一支筆");

}


從上面代碼可以看出,確實可以在簡單的情況下提供了動態可插入性。

但是由于java語言是一個單繼承的語言,換言之,一個類只能有一個超類,因此,在很多情況下,這個具體類可能已經有了一個超類,這個時候,要給他加上一個新的超類是不可能的。如果硬要做的話,就只好把這個新的超類加到已有的超類上面,形成超超類的情況,如果這個超超類的位置也已經被占用了,就只好繼續向上移動,直到移動到類等級結構的最頂端。這樣一來,對一個具體類的可插入性設計,就變成了對整個等級結構中所有類的修改。這種還是假設這些超類是我們可以控制的,如果某些超類是由一些軟件商提供的,我們無法修改,怎么辦呢?因此,假設沒有Java接口,可插入性就沒有了保證。


怎么樣?看完了本文小伙伴們是不是對Java接口存在意義不再疑惑,事實上,Java語言經過這么長時間的發展,Java里面的每一個機制或者專業術語都有著其獨特的意義,我們只有經過不斷的學習和探究,才能求得真相。觀看本站的Java接口教程,在求知好學的路上一往無前吧!


提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 久一在线视频 | 国产一区二区精品久久凹凸 | 精品国产综合区久久久久久 | 成人性生交大片免费看午夜a | 中文字幕亚洲综合久久菠萝蜜 | 中文亚洲字幕 | 综合另类小说色区色噜噜 | 成年女人视频在线观看免费 | 在线播放a 1 | 色综合中文字幕天天在线 | 欧美日韩成人在线 | 国产91在线 | 日本 | 很很鲁在线视频播放影院 | 久久久精品视频在线观看 | 老妇毛片久久久久久久久 | 国产亚洲欧美在在线人成 | 欧美成人激情在线 | 亚洲 欧美 国产另类首页 | 色综合久久一区二区三区 | 999国产高清在线精品 | 爱爱视频免费网站 | 四虎欧美永久在线精品免费 | 伊人久久成人 | 午夜特级毛片 | 日本在线毛片视频免费看 | 久久88香港三级台湾三级中文 | 4虎永免费最新永久免费地址 | 亚洲人成在线免费观看 | 四虎永久免费网站入口2020 | 欧美精品亚洲精品日韩专区va | 天天干天天操 | 日韩 亚洲 中文 图片 小说 | 亚洲一区二区三区国产精品 | 久久亚洲精品视频 | 四虎影视成人永久在线播放 | 国产成人永久在线播放 | 欧美亚洲国产一级毛片 | 亚洲精品99久久久久久 | 亚洲精品综合一区在线 | 99国产高清久久久久久网站 | 午夜色大片在线观看 |