2012-04-28 44 views
0

我是Java的新手,很苦惱與關聯。我有一個班級java自己創建一個類的關聯

public class A{ 
    private string name; 

    public string get_name() { 
    return name; 
    } 

    public void set_name(string name) { 
    name = name; 
    } 
} 

我與另一個班級B的關聯爲association A -> B。這是一對一的協會。現在我想要做的是創建另一個類C,其類型爲class A。換句話說,C和A是同一個類,但名稱不同。但是A和C之間有一對多的關聯。我會很感激任何幫助!

+1

如果'C' **是不同名稱的**'A',爲什麼不只是初始化'A'的一個實例並命名爲'C'? – Aidanc 2012-04-28 15:48:27

+2

wha?你的問題沒有多大意義。 – 2012-04-28 15:50:53

回答

2

如果CA用不同的名字,爲什麼不只是初始化的A一個實例並將其命名爲C

A c = new A(); 
c.set_name("Bob"); 

另外,如果C會隨時間而改變,但要依賴於A使C延長A

public class C extends A{ 

} 

不過,我會謹慎使用上述作爲它通常是一個壞主意的使一個超類具體化(如果A改變了行,並且你不希望C繼承這些改變?)。因此,使A成爲接口/抽象類,並使CAconcrete都能實現它。

像下面的內容將是一件好事......

abstract class A{ 
    protected String name; //Protected so that subclasses can call it 

    public String get_name() { 
    return name; 
    } 

    public void set_name(String name) { 
    this.name = name; 
    } 

} 

class C extends A{ 


} 

class Aconcrete extends A{ 

} 
+0

+1避免混凝土超類的提示。也許人們沒有那麼好(但)。 – 2012-04-28 15:53:43

1

如果我明白你的問題吧,這是你想要什麼:

public class A{ 
    private Collection<A> myCs; 
    private string name; 

    public string get_name() { 
    return name; 
    } 

    public void set_name(string name) { 
    this.name = name; 
    } 
} 

具有收藏myCs在類A是你的一對多關聯。如果它具有與A相同的參數,則不需要額外的類C

順便說一句:代碼中的setter有一個bug。我已經修復它。

0

你不需要第二類 - 你可能需要第二個(和100多個)對象。一個典型的例子是一個遞歸數據結構網絡就像一棵樹,它由節點:

public class Node { 
    private List<Node> childs = new ArrayList <Node>(); 

    public boolean isLeaf() { 
    return childs.isEmpty(); 
    } 

    public void add (Child c) { 
    childs.add (c); 
    } 
} 

(簡化的)

編譯器有在構建這樣一類,它使用一個定義其是沒有準備好沒有問題那時候。

也許編譯器的開發者有。 :)