【GO】面向对象:继承性

简介: 【GO】面向对象:继承性

咔咔博客之继承性

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

代码地址

https://github.com/fangkang7/goLearn

案例

首先我们需要定义父级的结构体和方法

屏幕快照 2022-05-18 下午7.52.15.png

image.png

知识点

在学到这一步貌似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()
}
相关文章
|
1月前
|
Java Go C++
Go面向对象是如何实现的?
【2月更文挑战第23天】
27 0
|
6月前
|
Cloud Native Java 编译器
100天精通Golang(基础入门篇)——第21天:Go语言面向对象(OOP)核心概念解析
100天精通Golang(基础入门篇)——第21天:Go语言面向对象(OOP)核心概念解析
72 0
Go面向对象设计
Go面向对象设计
|
网络协议 Java 测试技术
Go 独树一帜的面向对象特点 | 学习笔记
快速学习 Go 独树一帜的面向对象特点
77 0
Go 语言入门很简单:Go 如何面向对象
我们一直学习的是 Go 不支持面向对象,取而代之的是组合的方式。Go 利用接口可以实现类似面对对象的功能,比如多态。虽然 Go 语言并非面向对象的语言,但它还是包含了一些特征可模拟面向对象的编程语言。
|
设计模式 存储 算法
Go设计模式(2)-面向对象分析与设计
本篇文章主要讲解遇到项目之后如何做面向对象分析与设计。
【GO】实现一个简单的案例:家庭记账功能,并使用面向对象的思想进行封装(2)
【GO】实现一个简单的案例:家庭记账功能,并使用面向对象的思想进行封装
86 0
【GO】实现一个简单的案例:家庭记账功能,并使用面向对象的思想进行封装(2)
【GO】实现一个简单的案例:家庭记账功能,并使用面向对象的思想进行封装(1)
【GO】实现一个简单的案例:家庭记账功能,并使用面向对象的思想进行封装
84 0
【GO】实现一个简单的案例:家庭记账功能,并使用面向对象的思想进行封装(1)
【GO】面向对象:多态之类型断言
【GO】面向对象:多态之类型断言
79 0
【GO】面向对象:多态之类型断言
【GO】面向对象:多态
【GO】面向对象:多态
86 0
【GO】面向对象:多态