Go 抽象類別範例
本篇文章介紹 Go 實作抽象類別的方法,其中包含 C# 作為一開始解釋目標的語言。
一個抽象類別的範例
抽象類別 Animal
- 兩個類別,一個抽象類別
Animal
;另一個實體類別Person
。 Animal
有兩個屬性,Name
和Age
Animal
建構子包含兩個屬性的傳入Animal
有一個已實作方法GetInfo()
Animal
有一個未實作方法SayHello()
1 | abstract class Animal { |
實體類別 Person
Person
實作Animal
Person
繼承Animal
的建構子Person
實作SayHello()
1 | class Person : Animal { |
Main()
Main()
建構Person
放進Animal
型態的變數Main()
使用Animal
型態的變數,呼叫方法GetInfo()
和SayHello()
1 | public static void Main(string[] args) { |
Go 實作抽象類別
定義在 Go 的
IAnimal
interfaceAnimal
有一個未實作方法SayHello()
實作在 Go 的
Animal
structAnimal
有兩個屬性,Name
和Age
Animal
有一個已實作方法GetInfo()
實作在 Go 的
Person
structPerson
擁有Animal
structPerson
實作SayHello()
實作在 Go 的
main()
main()
建構Person
放進Animal
型態的變數main()
使用Animal
型態的變數,呼叫方法GetInfo()
和SayHello()
Go IAnimal
interface
定義原抽象類別 Animal
的抽象和實體方法,包含 GetInfo()
和 SayHello()
1 | type IAnimal interface { |
Go Animal
struct
實作原抽象類別 Animal
屬性和已實作方法
1 | type Animal struct { |
Go Person
struct
實作類別 Person
的 SayHello()
1 | type Person struct { |
Go 的 main()
- 調用時先定義參數
animal
,型態是 interfaceIAnimal
,用以呼叫封裝的方法 - 建構
Person
類別,將其記憶體位置給 interfaceIAnimal
- 建構方法包含 new keyword 和 struct literal
- 呼叫 interface
IAnimal
的方法,其底層呼叫的是實體類別Person
的方法
1 | func main() { |
補充說明 new keyword
1 | var animal IAnimal |
補充說明 struct literal
1 | var animal IAnimal |
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.