多型
- 基本介紹
- 快速入門
- 介面體現多型的兩種形式
- 多型引數
- 多型陣列
基本介紹
變數(實體)具有多種形態,面向物件的三大特征,在Go語言,多型特征是通過介面實作的,可以按照統一的介面來呼叫不同的實作,這時介面變數就呈現不同的形態,
快速入門
在前面的Usb介面案例,Usb usb,既可以接收相機變數,又可以接收手機變數,就體現了Usb介面多型特性,
代碼如下:
package main
import(
"fmt"
)
//定義一個介面
type Usb interface{
//宣告了兩個沒有實作的方法
Start()
Stop()
}
type Phone struct{
}
//讓Phone實作Usb介面的方法
func (p Phone) Start(){
fmt.Println("手機開始作業了.....")
}
func (p Phone) Stop(){
fmt.Println("手機停止作業了.....")
}
type Camera struct{
}
//讓Camera實作Usb介面
func (c Camera) Start(){
fmt.Println("相機開始作業了.....")
}
func (c Camera) Stop(){
fmt.Println("相機停止作業了.....")
}
//計算機
type Computer struct{
}
//撰寫一個方法Working,接受一個Usb介面型別的變數
func (c Computer) Working(usb Usb){
//通過usb介面變數來呼叫Start和Stop方法
usb.Start()
usb.Stop()
}
func main() {
computer := Computer{}
phone := Phone{}
camera := Camera{}
computer.Working(phone)
computer.Working(camera)
}
運行結果:

介面體現多型的兩種形式
多型引數
Usb介面案例中,Usb usb既可以接收手機變數,又可以接收相機變數,
func (c Computer) Working(usb Usb){
//通過usb介面變數來呼叫Start和Stop方法
usb.Start()
usb.Stop()
}
func main() {
computer := Computer{}
phone := Phone{}
camera := Camera{}
computer.Working(phone)
computer.Working(camera)
}
多型陣列
給Usb陣列中,存放Phone結構體和Camera結構體變數,
package main
import(
"fmt"
)
//定義一個介面
type Usb interface{
//宣告了兩個沒有實作的方法
Start()
Stop()
}
type Phone struct{
name string
}
//讓Phone實作Usb介面的方法
func (p Phone) Start(){
fmt.Println("手機開始作業了.....")
}
func (p Phone) Stop(){
fmt.Println("手機停止作業了.....")
}
type Camera struct{
name string
}
//讓Camera實作Usb介面
func (c Camera) Start(){
fmt.Println("相機開始作業了.....")
}
func (c Camera) Stop(){
fmt.Println("相機停止作業了.....")
}
func main() {
var usbArr [4]Usb
usbArr[0] = Phone{"蘋果"}
usbArr[1] = Camera{"索尼"}
usbArr[2] = Phone{"華為"}
usbArr[3] = Camera{"尼康"}
for _,value := range usbArr{
value.Start()
value.Stop()
}
}
運行結果:

博主首頁鏈接:https://blog.csdn.net/weixin_44736475
原創不易,希望大家多多支持
如果文章對你有幫助,記得一鍵三連哦!??????
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/264881.html
標籤:區塊鏈
上一篇:《cis股票交易術》讀后感
