2017-10-07 111 views
-1

我有這些特性A類:Java繼承

class A { 

String a; 
String b; 
..... 
List<C> myList; 
} 

我想一個類AEXT將延長,也將 「擴展」 myList中的屬性,這意味着:

class Aext extends A { 

String x; 
..... 
List<Cext> myList; 
.... 
} 

其中:

class Cext extends C { 
...... 
} 

但是我不能在子類中具有與超類相同名稱的成員,即:myList。名稱不得更改。我想要一個具有C屬性和Cext屬性的「擴展」myList。 A和B是DTO的,所以我想 有時返回b爲A的「豐富」的版本不改變名稱,類型等

回答

1

泛型救援。

class A<T extends C> { 

protected String a; 
protected String b; 
..... 
protected List<T> myList; 
} 

現在myList具有延伸C類型T的元件。

當你繼承AAext您可以指定​​爲myList元素的類型。

class Aext extends A<Cext> { 

String x; 
} 
1

你有仿製藥。使用它們。

class A<T extends C> { 
String a; 
String b; 
..... 
List<T> myList; 
} 

class Aext extends A<Cext> { 
}