面向對象?
面向對象是一種方法論。一種非常實用的系統化軟件開發方法。
三大特點:封裝、繼承、多態
Go和Java的區別
- Go不允許重載,Java允許
- Java允許多態,Go沒有(但可以通過接口實現)
- Go語言的繼承通過匿名組合完成,基類以Struct的方式定義,子類只需要把基類作為成員放在子類的定義中,支持多繼承;而Java的繼承通過extends關鍵字完成,不支持多繼承。
GO語言是面向對象的嗎?
不是面向對象,但提供了一些面向對象的能力
- Go 有類型和方法,并且允許面向對象的編程風格,但沒有類型層次。
- Go 中的 "接口 "概念提供了一種不同的方法,我們認為這種方法易于使用,而且在某些方面更加通用。還有一些方法可以將類型嵌入到其他類型中,以提供類似的東西,但不等同于子類
- Go 中的方法比 C++ 或 Java 中的方法更通用:它們可以為任何類型的數據定義,甚至是內置類型,如普通的、"未裝箱的 "整數。它們并不局限于結構(類)
GO語言如何支持面向對象?
封裝:通過屬性名大小寫控制訪問權限,提供Setter和Getter方法
繼承:通過組合的方式實現繼承:直接將要繼承的類型放到屬性位置。子類型包含了繼承類型的相關屬性和方法(首字母大寫或者小寫的字段、方法,都可以),也擁有自己的類型和方法
多態:通過接口實現多態,