2013-05-30 112 views
0

任何人都可以告訴我「如何訪問派生類中的基類變量」?如何從派生類c訪問基類值#

實施例:

類1.cs代碼

public class baseClass 
{ 
    public int intF = 0, intS = 0; 
    public int addNo() 
    { 
     int intReturn = 0; 
     intReturn = intF + intS; 
     return intReturn; 
    } 
} 

Public class child : baseClass 
{ 
    public int add() 
    { 
     int intReturn = 0; 
     intReturn = base.intF * base.intS; 
     return intReturn; 
    } 
} 

Class2.cs代碼

class Program 
{ 
    static void Main(string[] args) 
    { 
     baseClass obj = new baseClass(); 
     obj.intF = 5; 
     obj.intS = 4; 
     child obj1 = new child(); 
     Console.WriteLine(Convert.ToString(obj.addNo())); 
     Console.WriteLine(Convert.ToString(obj1.add())); 
     Console.ReadLine(); 
    } 
} 

的問題是在其被從基類繼承子類..

intF和intS的值始終顯示爲0而不是5 & 4。

任何人都可以讓我知道我要去哪裏嗎?

問候,

G.V.N.Sandeep

+0

兩個答案都是正確的。獲得預期結果的兩種最簡單的方法是:1)將obj聲明爲「baseClass obj = new child()」並刪除你創建obj1的行(它總是默認的);和2)聲明intF和intS爲「公共靜態int」 – Daniel

+0

完全重複(爲什麼?):http://stackoverflow.com/questions/5296026/ –

回答

3

實例字段intFintS屬於...實例,而不是一個類型。當您將它們設置爲obj實例時,obj1實例中的相同字段具有其默認值(零)。

您必須分配5和4是這樣的:

child obj1 = new child(); 
obj1.intF = 5; 
obj1.intS = 4; 
1

你的字段不static。對於您創建的每個實例(對象),都有一個單獨的字段。

objobj1是不同的實例。

順便說一句,在這種情況下不需要使用base關鍵字。由於繼承,這兩個字段在child類中是。當前類覆蓋或隱藏基類中的成員時,僅使用base