2012-12-17 32 views
0

如何打字:在字段中聲明對象有什麼好處?

public class Example 
{ 
    private Cat whiskers; 

    public void makeCat() 
    { 
     whiskers = new Cat(); 
    } 
} 

不同:

public class Example 
{ 
    public void makeCat() 
    { 
     Cat whiskers = new Cat(); 
    } 
} 

看來,第一個例子是更多的工作,因爲你現在只能創建貓從它的對象命名晶須。爲什麼要聲明它?

回答

2

在第一個聲明一個私有變量,可以在其他方法(或屬性)在同一個實例中使用。但是,在第二個示例中,您只需聲明一個具有本地範圍的變量,換句話說,該變量僅在makeCat()內可見。

+0

嗯...你應該小心你的措辭。考慮一個方法'void doSomething(Cat cat){...',如果它被傳遞給它,它可以使用示例#2中的Cat實例 – Bohemian

+0

,但是如果它是一個字段,則它的名稱已經聲明,任何更多的貓對象(與該領域)不被稱爲鬍鬚是正確的? –

+0

@波希米亞的好點,仍然在makeCat()的範圍內,對吧? – Ulises

1

看起來你需要一本關於面向對象編程基礎的好書。

在第一種情況下,您正在聲明一個「私有成員變量」。這是現在類的一部分,可以用於其他成員函數或甚至從外部使用。

在第二種情況下,您聲明瞭「局部變量」。這是一個只在定義函數內有效的變量,它僅用於函數內的計算。它不能從外部/從課程的其他功能訪問。

0

當第一個對象是第二個對象的 的一部分時,將在另一個對象的字段中聲明對象。 例 - :

class Product 
    { 
    int productId; 
    ProductDetail detail; 
    } 

class ProductDetail 
    { 
    string brand; 
    int price; 
    string description; 
    } 

在上述例子中,產品類​​中的一個對象對應於所述一個產品和每個產品都有一些details.So每當產品類對象被創建產品詳情類對象由JVM建立。

在第一種情況下,當Example類對象在任何地方創建時,Cat類對象由JVM創建。 在第二種情況下,它只是該方法中的局部變量。創建Example類對象時沒有Cat對象。

0

所不同的是第一個例子中使用了字段(又名「實例變量」),其其他方法也可以參考(即,‘使用’)它沒有它被傳遞給該方法。

第二個示例是局部變量 - 它只能在該方法內使用(或者其他方法,如果傳遞給它們的是)。

相關問題