Golang的封装继承与多态

类的封装及方法绑定

  • Golang支持类的操作,但是没有class关键字,使用struct类模拟类
  • 在struct中定义函数需要在外部绑定,通过在方法前面指定数据类型类绑定方法到指定类,有点类似于C#的扩展函数
package main

import "fmt"

// C++ 创建类的方式
/*
	class Person{
		public:
			string name
			int age

		public:
			Sayhi(){
				...
			}
	}
*/

// Golang创建一个person类,绑定Sayhi()方法
type Person struct {
   
	Name string
	Age int
}

// 在类外面绑定方法
// 通过在方法前面指定数据类型类绑定方法到指定类,有点类似于C#的扩展函数
// 下面这个Person数据类型,是Person对象的一个拷贝,在该函数下修改person里面的成员值,原始数据类型值不会改变
// 如果想在绑定的函数中可以修改原始数据类型的值,可以通过指针func (person *Person) Sayhi(){}的方式来定义
func (person Person) Sayhi(){
   
	// 类的方法,使用自己的成员Name
	fmt.Println("hi, my name is ",person.Name)
}

// 通过指针的方式将函数绑定在指定类中,在该函数下可以修改原始数据类型的成员值
func (this *Person) SayHello(){
   
	this.Name = "china"
	fmt.Println("hi, my name is ",this.Name)
}

func main() {
   
	person := Person{
   
		Name: "simple",
		Age: 25,
	}
	fmt.Println(person)
	person.Sayhi()

	fmt.Println(person)
	person.SayHello()
}

image

类的继承

  • 当我们在一个类中,直接包含另外一个类的类型,并且没写字段名的时候。它默认就是对另一个类的继承
  • 继承的时候,虽然没有定义字段名称,但是会自动创建一个默认的同名字段,这是为了在子类中,依然可以操作父类,因为子类父类可能出现同名的字段
package main

import "fmt"

// 定义一个人类
type Human struct
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Simple Han

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

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

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

打赏作者

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

抵扣说明:

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

余额充值