婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > Golang的繼承模擬實例

Golang的繼承模擬實例

熱門標簽:電腦外呼系統(tǒng)輻射大嗎 開通400電話申請流程 上海企業(yè)外呼系統(tǒng)排名 揚州電銷外呼系統(tǒng)軟件 如何利用高德地圖標注家 400手機電話免費辦理 武漢百應(yīng)人工智能電銷機器人 智能語音電銷的機器人 百度地圖標注位置網(wǎng)站

1.前言

面向?qū)ο缶幊痰娜筇匦裕悍庋b、繼承、多態(tài)。可見繼承是面向?qū)ο蟪绦蛟O(shè)計中一個重要的概念。Go 作為面向?qū)ο蟮木幊陶Z言,自然也支持繼承。

比較特殊的是 Go 實現(xiàn)繼承的方式與其他傳統(tǒng) OOP 語言所有不同,不像 C++ 有專門的繼承語法,或者像 Java 中有專門的關(guān)鍵字 extends。

C++ 的繼承:

// 基類
class Animal {
public:
    void eat(); 
	void sleep();
};


// 子類
class Dog : public Animal {
public:
    void bark();
};

Java 的繼承:

// 基類
public class Animal {
	public void eat(){};
	public void sleep(){};
}
// 子類
public class Dog extends Animal {
	public void bark(){};
}

2.嵌入式繼承機制

Go 使用匿名嵌套實現(xiàn)繼承。

我們用很容易理解的動物-貓來舉例子。

type Animal struct {
	Name string
}
func (a *Animal) Eat() {
	fmt.Printf("%v is eating", a.Name)
	fmt.Println()
}
type Cat struct {
	Animal
}
cat := Cat{
	Animal: Animal{
		Name: "cat",
	},
}
cat.Eat() // cat is eating

首先,我們實現(xiàn)了一個 Animal 的結(jié)構(gòu)體,代表動物類。并聲明了 Name 字段,用于描述動物的名字。

然后,實現(xiàn)了一個以 Animal 為 receiver 的 Eat 方法,來描述動物進食的行為。

最后,聲明了一個 Cat 結(jié)構(gòu)體,組合了 Cat 字段。再實例化一個貓,調(diào)用Eat方法,可以看到會正常的輸出。

可以看到,Cat 結(jié)構(gòu)體本身沒有 Name 字段,也沒有去實現(xiàn) Eat() 方法。唯一有的就是匿名嵌套的方式繼承了 Animal 父類,至此,我們證明了 Go 通過匿名嵌套的方式實現(xiàn)了繼承。

上面是嵌入類型實例,同樣地也可以嵌入類型指針。

type Cat struct {
	*Animal
}
cat := Cat{
	Animal: Animal{
		Name: "cat",
	},
}

3.嵌入式繼承機制的的局限

相比于 C++ 和 Java, Go 的繼承機制的作用是非常有限的,因為沒有抽象方法,有很多的設(shè)計方案可以在 C++ 和 Java 中輕松實現(xiàn),但是 Go 的繼承卻不能完成同樣的工作。

package main
import "fmt"
// Animal 動物基類
type Animal struct {
	name string
}
func (a *Animal) Play() {
	fmt.Println(a.Speak())
}
func (a *Animal) Speak() string {
	return fmt.Sprintf("my name is %v", a.name)
}
func (a *Animal) Name() string {
	return a.name
}
// Dog 子類狗
type Dog struct {
	Animal
	Gender string
}
func (d *Dog) Speak() string {
	return fmt.Sprintf("%v and my gender is %v", d.Animal.Speak(), d.Gender)
}
func main() {
	d := Dog{
		Animal: Animal{name: "Hachiko"},
		Gender:  "male",
	}
	fmt.Println(d.Name())
	fmt.Println(d.Speak())
	d.Play() // Play() 中調(diào)用的是基類 Animal.Speak() 方法,而不是 Dog.Speak()
}

運行輸出:

Hachiko
my name is Hachiko and my gender is male
my name is Hachiko

上面的例子中,Dog 類型重寫了 Speak() 方法。然而如果父類型 Animal 有另外一個方法 Play() 調(diào)用 Speak() 方法,但是 Dog 沒有重寫 Play() 的時候,Dog 類型的 Speak() 方法則不會被調(diào)用,因為 Speak() 方法不是抽象方法,此時繼承無法實現(xiàn)多態(tài)。

4.使用接口封裝方法

為了解決上面的問題,我們應(yīng)該使用接口封裝方法,通過實現(xiàn)接口方法來實現(xiàn)多態(tài)。

package main
import (
    "fmt"
)
type Animal interface {
    Name() string
    Speak() string
    Play()
}
type Dog struct {
    name string
    gender string
}
func (d *Dog) Play() {
    fmt.Println(d.Speak())
}
func (d *Dog) Speak() string {
    return fmt.Sprintf("my name is %v and my gender is %v", d.name, d.gender)
}
func (d *Dog) Name() string {
    return d.name
}
func Play(a Animal) {
    a.Play()
}
func main() {
    d :=Dog{"Hachiko", "male"}
    fmt.Println(d.Name())
    fmt.Println(d.Speak())
    Play(d)
}

運行輸出:

Hachiko
my name is Hachiko and my gender is male
my name is Hachiko and my gender is male

注意:Go 中某個類型需要實現(xiàn)接口中的所有方法才算作實現(xiàn)了接口。

5.小結(jié)

如果一個 struct 嵌套了另一個匿名結(jié)構(gòu)體,那么這個結(jié)構(gòu)可以直接訪問匿名結(jié)構(gòu)體的屬性和方法,從而實現(xiàn)繼承。

如果一個 struct 嵌套了另一個有名的結(jié)構(gòu)體,那么這個模式叫做組合。

如果一個 struct 嵌套了多個匿名結(jié)構(gòu)體,那么這個結(jié)構(gòu)可以直接訪問多個匿名結(jié)構(gòu)體的屬性和方法,從而實現(xiàn)多重繼承。

本篇文章就到這里了,希望能幫助到你,也希望您能多多關(guān)注腳本之家的更多內(nèi)容!

您可能感興趣的文章:
  • Django繼承自帶user表并重寫的例子
  • Go語言中nil判斷引起的問題詳析
  • 分析Go語言中CSP并發(fā)模型與Goroutine的基本使用
  • Go遍歷struct,map,slice的實現(xiàn)
  • Go 容器遍歷的實現(xiàn)示例

標簽:嘉峪關(guān) 宜賓 新余 延邊 武漢 黑龍江 江西 張掖

巨人網(wǎng)絡(luò)通訊聲明:本文標題《Golang的繼承模擬實例》,本文關(guān)鍵詞  Golang,的,繼承,模擬,實例,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Golang的繼承模擬實例》相關(guān)的同類信息!
  • 本頁收集關(guān)于Golang的繼承模擬實例的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    色拍拍在线精品视频8848| 欧美国产一区二区| 欧美精品777| 国产精品国产三级国产三级人妇| 久久99热这里只有精品| 91精品国产91久久久久久最新毛片| 亚洲色图丝袜美腿| 色婷婷综合在线| 最新国产精品久久精品| 成人97人人超碰人人99| 国产欧美一区二区三区鸳鸯浴| 99久久国产综合色|国产精品| 国产精品免费视频网站| 成人高清视频在线| 国产蜜臀av在线一区二区三区| 久久久精品免费网站| 国产精品无人区| 成人禁用看黄a在线| 制服丝袜中文字幕一区| 中文字幕第一区综合| 91精品国产综合久久精品性色| 美女视频黄久久| 国产精品久久久久久久久快鸭| 国产精品久久久久久久第一福利| 久久色在线视频| 粉嫩绯色av一区二区在线观看 | 91蜜桃网址入口| 日韩午夜在线观看| 欧美变态凌虐bdsm| 奇米精品一区二区三区四区| 成人av在线观| 成人av影院在线| 国产精品免费视频观看| 国产精品美女久久久久久久久久久| 亚洲福中文字幕伊人影院| 在线观看日韩电影| 韩国在线一区二区| 国产精品色哟哟网站| 国产偷v国产偷v亚洲高清| 免费在线观看视频一区| 亚洲视频免费观看| 日韩欧美另类在线| 精品乱人伦小说| 狠狠狠色丁香婷婷综合激情| 国产日韩精品一区二区浪潮av | av成人动漫在线观看| 国产精品1区2区3区在线观看| 中文字幕不卡的av| 精品国产伦一区二区三区免费| 经典三级在线一区| 在线看国产日韩| 免费成人在线播放| 五月综合激情婷婷六月色窝| 亚洲一区二区偷拍精品| 国产福利一区在线| 精品一区二区三区免费视频| 欧美一区二区三区人| 亚洲影视在线观看| 欧美日韩国产高清一区二区| 五月婷婷激情综合网| 911精品产国品一二三产区| 亚洲福利一二三区| 欧美另类变人与禽xxxxx| 麻豆精品一区二区av白丝在线| 日韩区在线观看| 欧美精品久久一区| 久久99精品国产麻豆婷婷洗澡| 欧美精品一区二区三区高清aⅴ| 视频精品一区二区| 成人污视频在线观看| 美国毛片一区二区三区| 日韩电影在线一区| 精品综合免费视频观看| 欧美在线观看视频一区二区三区| 日韩中文字幕91| 欧美日韩电影在线| 亚洲日本丝袜连裤袜办公室| 色综合夜色一区| 麻豆成人在线观看| 国产精品久久三| 欧美二区乱c少妇| 国产iv一区二区三区| 一区二区三区欧美| 日韩欧美一级二级三级久久久| 精品制服美女久久| 亚洲国产aⅴ成人精品无吗| 久久精品夜色噜噜亚洲a∨| 色成年激情久久综合| 日本成人在线一区| 69久久夜色精品国产69蝌蚪网| 成人免费视频视频| 日本不卡高清视频| 国产精品久久福利| 精品捆绑美女sm三区| 欧洲色大大久久| 国产在线精品国自产拍免费| 天堂在线一区二区| 亚洲精品乱码久久久久久日本蜜臀| 日韩一级片在线播放| 在线观看日产精品| 91浏览器打开| 成人app下载| 国产成+人+日韩+欧美+亚洲| 日产国产高清一区二区三区| 一区二区欧美在线观看| 日本一区二区成人在线| 精品国产露脸精彩对白| 视频一区国产视频| 国产色91在线| 99精品桃花视频在线观看| 一区二区三区欧美日韩| 91国偷自产一区二区三区观看| 轻轻草成人在线| 欧美一区二区福利视频| 91官网在线免费观看| 日韩激情一区二区| 国产精品美女久久久久aⅴ| 欧美性生活久久| 青青草97国产精品免费观看| 中文字幕亚洲综合久久菠萝蜜| 成人激情免费视频| 国产精品视频观看| 亚洲国产精品高清| 欧美一级搡bbbb搡bbbb| 激情五月婷婷综合| 亚洲一二三级电影| 日韩精品午夜视频| 国产精品亚洲人在线观看| www.亚洲免费av| av电影在线观看完整版一区二区| 国产成人精品亚洲777人妖| 国产老女人精品毛片久久| 国产成人免费在线观看| 99久久99久久精品免费看蜜桃| 色成人在线视频| 日韩欧美视频一区| 欧美国产成人精品| 亚洲成人精品一区二区| 日本不卡视频一二三区| 风间由美一区二区av101| 国产福利91精品| 成人妖精视频yjsp地址| www.亚洲色图.com| 欧美肥妇bbw| 国产女主播在线一区二区| 91精品国产一区二区三区蜜臀| 99久久综合精品| 久久99国内精品| 日韩高清不卡一区二区三区| 亚洲 欧美综合在线网络| 国产精品污www在线观看| 精品乱人伦小说| 91精品国产色综合久久不卡蜜臀| 777午夜精品视频在线播放| 91毛片在线观看| 精品国产免费人成电影在线观看四季| 欧美高清在线精品一区| 午夜精品成人在线| 99久久精品情趣| 日韩精品一区二区在线| 亚洲欧美另类久久久精品2019| 人人超碰91尤物精品国产| 成人99免费视频| 欧美mv日韩mv国产网站app| 亚洲欧美日韩国产一区二区三区 | 国产.精品.日韩.另类.中文.在线.播放| 粉嫩高潮美女一区二区三区 | 欧美一区二区播放| 国产精品网站在线| 久久国产日韩欧美精品| 91小视频免费看| 国产日韩欧美综合在线| 日韩综合小视频| 欧美日精品一区视频| 亚洲免费av在线| 国产91丝袜在线18| 精品国产一区二区三区忘忧草| 亚洲卡通欧美制服中文| 国产成人精品一区二| 日韩一区二区高清| 午夜国产精品一区| 色婷婷综合久久久中文一区二区| 久久天堂av综合合色蜜桃网| 首页国产欧美日韩丝袜| 欧美影片第一页| 亚洲欧美日韩小说| 成人美女在线观看| 中文在线资源观看网站视频免费不卡| 美腿丝袜在线亚洲一区| 欧美精品tushy高清| 亚洲午夜国产一区99re久久| 午夜不卡av在线| 成人在线一区二区三区| 欧美日韩一区二区在线观看 | 亚洲靠逼com| 另类欧美日韩国产在线| 国产成人一级电影| 制服丝袜亚洲网站| 久久激情五月婷婷| 日韩欧美国产三级|