2016-12-10 83 views
0

我想知道Java中的抽象類中的對象變量會發生什麼。例如,如果有這樣的抽象類:Java中的抽象類及其對象變量

public abstract class BaseClass{ 
private int[] myNumbers; 
public Baseclass(int length){ 
    myNumbers = new int[length]; 
} 
public boolean isOne(int index){ 
    return myNumbers[index] == 1; 
} 
} 

和我有它擴展BaseClass的這個現實類:

public class ArrayClass extends BaseClass{ 
private int[] myNumbers; //i have to define it again? 
public ArrayClass(int length){ 
    super(length); //does this affect my array? I don't think so 
} 
public void setValue(int index, int value){ 
    if(!isOne(index)) 
    myNumbers[index] = value; 
} 
} 

我想在我的BaseClass定義基本操作,並做一些其他的東西在我的正常ArrayClass。因爲我需要一個array在我的BaseClass我必須定義一個以不同的方法(顯然)使用它。

但在我的ArrayClass其中延伸BaseClass我必須定義另一個數組。我不確定這是爲什麼,如果它需要這樣?我希望你明白我的意思。例如我可以利用BaseClass的第二時間該正常類:

public class ArrayClass2 extends BaseClass{ 
private int[] myNumbers; 
public ArrayClass2(int length){ 
    super(length); 
} 
public int getValue(int index){ 
    if(!isOne(index)) 
    return myNumbers[index]; 
    else 
    return 1; 
} 
} 
+0

我相信你已經閱讀過關於Java中'private'的含義,但如果不是的話 - 這個搜索可能對你有幫助 - https://www.bing.com/search?q=java+private –

回答

0

Java有四種訪問類型。你可以閱讀關於他們here

如果您想將您的基類中的字段暴露給其子級,可以使用受保護的修飾符。

+0

但是如果我不想公開變量呢? – binaryBigInt

+0

那麼你可以做兩件事來重用你的數組。第一個使用繼承(就像你現在要做的那樣)或組合。在組合中,你將在數組類中實例化你的基類,並將數組操作委託給他。 – marknorkin

+0

但是請注意,在那種情況下基類不會是抽象的 – marknorkin