亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫(kù)
最近訪問(wèn)板塊 發(fā)新帖
樓主: TAxxjszxlkjf
打印 上一主題 下一主題

關(guān)于java中接口的認(rèn)識(shí)(不知理解的是否正確) [復(fù)制鏈接]

論壇徽章:
0
11 [報(bào)告]
發(fā)表于 2005-09-07 15:43 |只看該作者

關(guān)于java中接口的認(rèn)識(shí)(不知理解的是否正確)

樓上的朋友
callback a=new A() 和 A a=new A()
那么這樣的方式(使用接口)是不是就降低了耦合呢

論壇徽章:
0
12 [報(bào)告]
發(fā)表于 2005-09-07 16:22 |只看該作者

關(guān)于java中接口的認(rèn)識(shí)(不知理解的是否正確)

如果class A是interface callback的一個(gè)實(shí)現(xiàn)的話,對(duì)于調(diào)用者來(lái)說(shuō)A就是透明的,所以不應(yīng)該有new A()這種操作存在
至于調(diào)用者怎么獲得interface的實(shí)現(xiàn),可以參考我前面回帖中說(shuō)的方法

論壇徽章:
0
13 [報(bào)告]
發(fā)表于 2005-09-07 16:35 |只看該作者

關(guān)于java中接口的認(rèn)識(shí)(不知理解的是否正確)

樓主的代碼上還是沒(méi)有降低耦合度。
我舉個(gè)別的例子吧:

  1. import java.util.Iterator;
  2. import java.util.Vector;

  3. //Interface Decouble Example

  4. public class  ChinaUnixJavaCircusShow{

  5.         public static void main(String[] args) {
  6.                 Circus c = new Circus();
  7.                 c.addAnimalActors(new Bear());
  8.                 c.addAnimalActors(new Horse());
  9.                 c.addAnimalActors(new Dog());
  10.                 c.bigShow();
  11.         }
  12. }

  13. interface AnimalActor {
  14.         public void showBestPose();
  15. }

  16. class Bear implements AnimalActor {

  17.         public void showBestPose() {
  18.                 System.out.println("This bear show!!");
  19.         }
  20. }

  21. class Horse implements AnimalActor {

  22.         public void showBestPose() {
  23.                 System.out.println("This horse show!!");
  24.         }
  25. }

  26. class Dog implements AnimalActor {

  27.         public void showBestPose() {
  28.                 System.out.println("This dog show!!");
  29.         }
  30. }

  31. class Circus {
  32.         private Vector actors = new Vector();

  33.         public void addAnimalActors(AnimalActor a) {
  34.                 actors.add(a);
  35.         }

  36.         public void bigShow() {
  37.                 Iterator i = actors.iterator();
  38.                 while (i.hasNext()) {
  39.                         ((AnimalActor) i.next()).showBestPose();
  40.                 }
  41.         }
  42. }
復(fù)制代碼

由于使用了接口,Circus不再理會(huì)參加演出的具體的動(dòng)物演員的類,只要是實(shí)現(xiàn)了AnimalActor接口的類都可以參加Big Show。
如果沒(méi)有使用接口,那么Circus的代碼中就要包含Horse,bear, dog類的引用,F(xiàn)在Circus的代碼和具體可能有多少種動(dòng)物無(wú)關(guān),這就是解藕

論壇徽章:
0
14 [報(bào)告]
發(fā)表于 2005-09-07 21:45 |只看該作者

關(guān)于java中接口的認(rèn)識(shí)(不知理解的是否正確)

版主說(shuō)得沒(méi)錯(cuò),例子很形象

我原本也想回這個(gè)貼,但一時(shí)沒(méi)有找到好的例子。

論壇徽章:
0
15 [報(bào)告]
發(fā)表于 2005-09-08 08:30 |只看該作者

關(guān)于java中接口的認(rèn)識(shí)(不知理解的是否正確)

這種例子我也是知道的
類F
package com.examples.basics;
interface wuqi{
    public void gongji();
}
class A implements wuqi {
public void gongji() {
System.out.println("Inside A's constructor.";
}
}
class B implements wuqi {
public void gongji() {
System.out.println("Inside B's constructor.";
}
}


class C implements wuqi {

public void gongji() {
System.out.println("Inside C's constructor.";
}
}

class F  {
public static void main(String args[]){
wuqi a = new A();
a.gongji();
wuqi b = new B();
b.gongji();
wuqi c = new C();
c.gongji();
}
}


類Epackage com.examples.basics;
class A  {
public void gongji() {
System.out.println("Inside A's constructor.";
}
}
class B  {
public void gongji() {
System.out.println("Inside B's constructor.";
}
}

class C {
public void gongji() {
System.out.println("Inside C's constructor.";
}
}
class E  {
public static void main(String args[]){
A a = new A();
a.gongji();
B b = new B();
b.gongji();
C c = new C();
c.gongji();
}
}


類D
package com.examples.basics;
interface wuqi{
    public void gongji();
}
class A implements wuqi {
public void gongji() {
System.out.println("Inside A's constructor.";
}
}
class B implements wuqi {
public void gongji() {
System.out.println("Inside B's constructor.";
}
}


class C implements wuqi {

public void gongji() {
System.out.println("Inside C's constructor.";
}
}
class wqkzt {

public void kaihuo(wuqi w) {
   w.gongji();
}
}
class D  {
public static void main(String args[]){
wqkzt e=new wqkzt();
e.kaihuo(new A());
e.kaihuo(new B());
e.kaihuo(new C());
}
}


其中類D的實(shí)現(xiàn)應(yīng)該和版主的例子是一樣的,我只是想知道類D中e.kaihuo(new C())傳遞參數(shù)傳遞的是對(duì)象還是方法。如果是對(duì)象的話,那么不就和類E F不就一樣了嗎。即類D中若多一項(xiàng)e.kaihuo(new D());
那類E
D d = new D();
d.gongji();
類 F
wuqi d = new C();
d.gongji();
(其中類D也實(shí)現(xiàn)gongji()
3個(gè)類比起來(lái)從哪里可以看出解耦呢

論壇徽章:
0
16 [報(bào)告]
發(fā)表于 2005-09-08 08:49 |只看該作者

關(guān)于java中接口的認(rèn)識(shí)(不知理解的是否正確)

傳遞的當(dāng)然是對(duì)象。

wqkzt類不再關(guān)心具體武器的類型。只是對(duì)wuqi這個(gè)接口進(jìn)行操作,這就是解耦

論壇徽章:
0
17 [報(bào)告]
發(fā)表于 2005-09-08 09:10 |只看該作者

關(guān)于java中接口的認(rèn)識(shí)(不知理解的是否正確)

不過(guò)樓主的例子還真是弓雖
用拼音做類名……-_-||

論壇徽章:
0
18 [報(bào)告]
發(fā)表于 2005-09-08 19:02 |只看該作者

關(guān)于java中接口的認(rèn)識(shí)(不知理解的是否正確)

e.kaihuo(new A());
e.kaihuo(new B());
e.kaihuo(new C());
wqkzt類這樣不也得關(guān)心武器的類型嗎
(真郁悶就是不明白。)

論壇徽章:
0
19 [報(bào)告]
發(fā)表于 2005-09-09 00:28 |只看該作者

關(guān)于java中接口的認(rèn)識(shí)(不知理解的是否正確)

>;  wqkzt類這樣不也得關(guān)心武器的類型嗎

在 wqkzt 這個(gè)類的定義中不用(也不可能)關(guān)心武器的類型。

論壇徽章:
0
20 [報(bào)告]
發(fā)表于 2005-09-09 08:40 |只看該作者

關(guān)于java中接口的認(rèn)識(shí)(不知理解的是否正確)

原帖由 "TAxxjszxlkjf" 發(fā)表:
e.kaihuo(new A());
e.kaihuo(new B());
e.kaihuo(new C());
wqkzt類這樣不也得關(guān)心武器的類型嗎
(真郁悶就是不明白。)
你是所有類的程序員,所以你看到了所有的細(xì)節(jié)。假設(shè)你只開(kāi)發(fā)了wqkzt類,其他類你沒(méi)有source code,你看到了什么?能看到具體的武器類型么?
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國(guó)互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過(guò)ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP