2013-07-29 40 views
0

爲什麼有人會創建並調用一個將它自己的類作爲輸入參數的方法?如果我們想要分配/更改值,僅僅做ob.a = x並不簡單?有什麼優勢和劣勢?傳遞給方法的引用

class Test 
{ 
    public int a, b; 

    public Test(int i, int j) 
    { 
     a = i; 
     b = j; 
    } 

    public void Change(Test junk) 
    { 
     junk.a = junk.a + junk.b; 
     junk.b = -junk.b; 
    } 
} 

class Program 
{ 
    static void Main(string[] args) 
    { 
     Test ob = new Test(15,20); 
     Console.WriteLine("ob.a and ob.b before call: " + ob.a + " " + ob.b); 
     ob.Change(ob); 
     Console.WriteLine("ob.a and ob.b after call: " + ob.a + " " + ob.b); 
     Console.ReadLine(); 
    } 
} 

回答

-1

這就是封裝,它是面向對象編程的基礎。

+0

不是一個非常有用的答案,即使它正確理解問題。 –

0

您無法直接通過對象訪問課程的私人和受保護成員。只有公共變量可以通過對象訪問。

所以,如果你想改變私有/受保護的數據成員需要成員函數。

+0

如果我讓類變量(a,b)是私有的,我不能運行ob.Change。 –

+0

你可以運行ob.change()mehtod,沒有人阻止你這樣做,我的意思是你可以從main調用它,因爲它是一個公共成員函數。 – Mahesh

+0

我想OP是問這個問題的反面。不是爲什麼使用成員方法,但爲什麼一個類會有靜態方法在自己的類上運行。 –