並在POOItem裡宣告三者
public class POOItem {
public static final int BOARD = 1;
public static final int DIR = 2;
public static final int SLINE = 3;
public POOBoard Board;
public POODirectory Dir;
public POOSplitLine SLine;
int typeID;
}
//POOBoard的一部分
public class POOBoard extends POOItem {
private static final int MAXARTICLES = 1024;
public String Name;
private int nArticles;
private POOArticle[] Articles;
public POOBoard(String name){
this.Name = name;
super.Board = this; //<-這裡
super.typeID = POOItem.BOARD; //<-還有這裡
Articles = new POOArticle[MAXARTICLES];
nArticles = 0;
}
}想法二:和想法一雷同,不過base class只有輸出名字的功能
public class POOParent {
private String name;
public String getName(){return name;}
public void changeName(String name){this.name = name;}
}想法三:不用extend,直接用陣列
首先
我們先在POODirectory中宣告
POOBoard[] Board = new POOBoard[MAX];
POODirectory[] Dir = new POODirectory[MAX];
我們先在POODirectory中宣告一個"二維的整數陣列"
int[][] A;
A = new int[MAX];
for(int i = 0 ; i<>
A[i] = new int[2];
這個陣列是1024*2的
陣列中的第一個值(A[i][0])代表"類型"
第二個值(A[i][1])代表"位置"
比如說
如果當"類型"的值為0時為splitline、1時為board、2時為directory
那有一二維陣列A[2][1024];
當A[0][0]=1 && A[0][1]=11 時
表示這個Directory的第一個(第零個)位置為一個board,而且是board[11]的內容。
//簡單寫個範例
if(A[i][0]==0)
System.out.println("----------");
else if(A[i][0]==1)
Board[A[i][1]].show();
else if(A[i][0]==2)
Dir[A[i][1]].show();
沒有留言:
張貼留言