【GO】面向對象:繼承性

咔咔博客之繼承性

  • 繼承的意義在於低成本地擴展和改造原有代碼
  • 首先,子類一行代碼便可擁有父類的所有成員(屬性和方法)
  • 繼承的目的,在於擴展和改造父類
  • 擴展,是指子類發展出本身獨有的新屬性和新方法,以適應自身需求
  • 改造,是指子類覆寫和覆蓋父類成員(屬性和方法),以適應自身需求

代碼地址

https://github.com/fangkang7/goLearngit

案例

首先咱們須要定義父級的結構體和方法
在這裏插入圖片描述
而後在寫孩子的結構體和方法
在這裏插入圖片描述
從而就會有三種形式
在這裏插入圖片描述github

知識點

在學到這一步貌似go的繼承比PHP的要簡單的多微信

go的繼承只須要把父級的結構體名直接放到裏邊就行spa

繼承後能夠訪問父級的屬性和方法、也能夠訪問本身的專有屬性、同時還擁有重寫父級方法code

代碼

全部案例都配備有代碼,直接扔進去就能夠執行blog

package main

import "fmt"

// 父級結構體
type parent struct { 
	name string
	age  int
	like []string
}

// 父級方法
func (p *parent) parentName() { 
	fmt.Printf("我是父親的名字%s\n", p.name)
}

// 孩子結構體
type child struct { 
	// 繼承父級
	parent
	// 孩子的專有屬性
	play []string
}

// 孩子的方法
func (child *child) eat() { 
	fmt.Println("咔咔喜歡吃右")
}

// 覆寫父級的方法
func (child *child) parentName() { 
	fmt.Println("我是覆蓋父級的方法")
}

func main() { 
	parent := new(parent)
	parent.name = "咔咔手賺網:fangkang.top"
	// 我是父親的名字咔咔手賺網:fangkang.top
	parent.parentName()

	// 訪問父類的屬性和方法
	child := new(child)
	child.name = "咔咔博客地址:blog.fangkang.top"
	// 我是父親的名字咔咔博客地址:blog.fangkang.top
	child.parentName()
	// 咔咔博客地址:blog.fangkang.top
	fmt.Println(child.name)

	// 訪問特有的屬性和方法
	// 咔咔喜歡吃右
	child.eat()
	strings := []string{ "咔咔博客", "咔咔手賺網"}
	child.play = strings
	// [咔咔博客 咔咔手賺網]
	fmt.Println(child.play)

	// 訪問覆蓋父級的方法
	// 我是覆蓋父級的方法
	child.parentName()
}

博主微信歡迎交流

在這裏插入圖片描述

相關文章
相關標籤/搜索