想寫一個List,其中Node的定義如下:
public abstract class Node{
public Node son=null;//為了測試方便,使用public
//……還有好多
}
這樣是想以後用的時候可以繼承Node再添加實體。顯然這麼定義是不行的,因為以下代碼可以通過:
A a=new A();//A extends Node
a.son=new B();//B extends Node
那麼怎麼定義呢?
PS:如果寫成
public class Node<T>{
private Node son=null;
private T t=null;
}
這樣然後實體作為參數傳給Node可以實現的這種事情我也是知道的。單純是覺得不美麗。
不知道你要表達什麼意思。
son 定義為私有,定義公有的 getSon/setSon,那麼子類重寫 setSon() 可以對賦值的類型進行校驗啊。
A 子類的 setSon 只接受 A 不接受 B(如果B沒有繼承A的話)。