2013-04-12 129 views
0

雖然編碼在一個應該被實例化的類的功能,一些變量僅暫時使用 - 例如如在for循環計數器 - 有些是全局和其他人返回和/或「存儲」在對象的實例作爲instance.variableinstance->variable ...取決於語法。變量範圍和參考在OOP

我的問題是,在所述函數中定義一個變量時,我是否應該始終使用object.variable =,還是應該只在我打算將其返回或使其可供用戶使用時才使用它?

我不是專業的,所以我不知道如果我在尋找正確的方式,但是從我看到它有幾個原因,我應該使用一個或另一個,以及一些上始終使用object.variable的優點和缺點:

variable

  • 如果範圍應該只在定義它的功能,或者
  • 如果它是一個全球性的(顯然不是唯一的每個實例)。

object.variable

  • 如果它應該是另一種方法或可供用戶操作。
  • 如果它應該對每個實例都是唯一的。

而且

  • 它總是設置它,消除了可能範圍問題的範圍內使用。
  • 它可能有安全隱患。

上午我在看這個正確的方式?

回答

1

您使用術語「變量」指定三個不同的概念:

  • 在函數聲明的變量是局部變量;
  • 在類中聲明的變量是成員屬性實例變量;在一個類(和靜態)宣佈
  • 變量是一個類變量

局部變量是從在其中聲明它的塊訪問,是它的狀態下,一個環或一個函數。你的循環計數器變量應該是本地,因爲你不會在別處使用它。另外,它不能是一個屬性,因爲它與你的實例無關。

使用:variable

構件屬性是綁定到該實例的屬性。它表徵了它。因此,在實例化對象之前它不可用(並且不存在於內存中)。它是在課堂內聲明的,但在任何方法之外。您還必須確定它的可見性(公共,受保護,私密)。見encapsulation

除非您有充分的理由,否則絕不要標記成員公衆。

公共成員(無論是屬性或方法)可以訪問這種方式一類的外:

MyObject obj = new MyObject(); 
obj.myMethod(); 

當你想使用你的類裏面,從你的方法之一,例如,您可以使用variable。但是,使用this.variable是一種好的做法:可以聲明與屬性具有相同名稱的局部變量。如果你不堅持這個習慣,它可能會變成真正的噩夢。請注意,this關鍵字可能因您使用的語言而異。

A 類別變量/方法獨立於創建的任何實例而存在。它在您創建新實例之前就存在。無論該類有多少個實例,只會有一個副本。就像實例成員一樣,您必須設置可見性。 使用MyClass.member是一種很好的做法,無論是課內還是課外。

我希望能回答你的問題。