【GO】面向对象:继承性

咔咔博客之继承性

  • 继承的意义在于低成本地扩展和改造原有代码
  • 首先,子类一行代码即可拥有父类的全部成员(属性和方法)
  • 继承的目的,在于扩展和改造父类
  • 扩展,是指子类发展出自己独有的新属性和新方法,以适应自身需求
  • 改造,是指子类覆写和覆盖父类成员(属性和方法),以适应自身需求

代码地址

https://github.com/fangkang7/goLearn

案例

首先我们需要定义父级的结构体和方法
在这里插入图片描述
然后在写孩子的结构体和方法
在这里插入图片描述
从而就会有三种形式
在这里插入图片描述

知识点

在学到这一步貌似go的继承比PHP的要简单的多

go的继承只需要把父级的结构体名直接放到里边就行

继承后可以访问父级的属性和方法、也可以访问自己的专有属性、同时还拥有重写父级方法

代码

所有案例都配备有代码,直接扔进去就可以执行

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()
}

博主微信欢迎交流

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

咔咔-

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值