武大郎,來十個燒餅。。。
package mainimport
"fmt
"type integer
int//
為內建的int型別增加了新方法less,物件導向寫法
func (a integer) less(b integer) bool
func integer_less(a integer, b integer)
bool
//go的物件導向,如果需要修改物件,必須用指標,這不是go約束,還是自然約束
func (a *integer) add(b integer)
//integer型別是乙個int,為int起乙個別名integer,
//並且增加一系列方法add,add2,又程式設計了乙個新的型別,這個型別還完全擁有int的功能
//傳遞值而不是指標
func (a integer) add2(b integer)
func main()
if integer_less(a, 2
)
//為integer又加了add方法,add()方法需要修改物件的值,需要指標引用
"a=", a)
//實現成員方法傳入的如果不是指標,而是值,也就是integer,而非*iteger,,這時a=1
a.add2(2
) fmt.println("a=
", a)
//go語言和c語言一樣,型別都是基於值傳遞,想要修改變數的值,只能傳遞指標}/*
go語言中沒有隱藏的this指標
方法施加的目標(「物件」)顯示傳遞,沒有被隱藏
方法施加的目標(「物件」)不需要非得是指標,也不用非得叫this
*/
大郎說,燒餅放在家裡了
//值語義和引用語義
//b=a
//如果b的修改,不影響a的值,那麼此型別就是值型別
//如果會影響a的值,那麼此型別就是引用型別
//go語言大多態別都是值語義
//基本型別:byte、int、bool、float32、float64、string等
//復合型別:陣列(array)、結構體(struct)和指標(point)
//陣列被完整的複製,就是值語義
func main()
var b=a //
表示b=a賦值語句,是陣列內容的完整複製
b[1]++fmt.println(a,b)}//
引用方法,需要使用指標
func main()
var b = &a //
這句賦值,是陣列內容的引用,變數b型別是*[3]int型別
b[1]++fmt.print(a, *b)
}
java之物件導向
類是用於描述同一型別的物件的乙個抽象。類中定義了這一類物件所具有的靜態和動態屬性 靜態屬性 成員變數 動態屬性 方法 1 類可以看成是一類物件的模板,物件可以看成該類的乙個具體例項 2 首先必須定義類才能有物件 說到類,就不得不說構造其構造方法了 在new乙個物件是,呼叫的就是類中的構造方法 列如p...
static之物件導向
一 靜態資料成員子 includeusing namespace std class point int point num 0 定義靜態資料成員 int main 對於類的非靜態資料成員,每個類物件都有自己的拷貝。而對於靜態資料成員被當作是類的成員。就像上述例子中,雖然定義了4個物件,但是靜態資料...
Lua Lua之物件導向
萬物皆值 函式也是一種值 正式這個特點我們可以使用 table 陣列 構建乙個包含有屬性和方法的 table,這個table 就可以被我們當做物件來使用 tbl1 tbl2 setmetatable tbl2,print tbl2.a 輸出1metastable可以用來改變table的行為,如 in...