Go的面向对象--封装、继承和多态理解与练习

本文通过Go语言展示了面向对象的三大特性:封装、继承和多态。封装通过Person结构体和方法实现,确保数据的安全性和操作的一致性。继承通过Student结构体从Person继承,复用并扩展了父类的功能。多态通过Animal接口和Dog、Cat结构体展示,实现了不同类对象对同一方法的不同响应。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文主要使用Go对面向对象的三大属性进行了练习

封装:外界不需要知道内部实现,只需要使用方法进行使用即可;

继承:子类可以调用父类的属性和方法;

多态:一种事物多种形态,父类指向子类对象;

//object oriented programming

package  main

import "fmt"

//1.封装;
type person struct {
	name string
	age int
}

func (p *person) setName(n string){
	p.name = n
}

func (p *person) setAge(a int){
	p.age = a
}

func (p person) getName()  string{
	return p.name
}

func (p person) getAge()  int{

	aa := p.age
	return aa
}


func encapsulation(){

	fmt.Println("hello encapsulation! ")
	//p :=  person{}
	var p person
	p.setAge(10)
	p.setName("fanguohao")
	fmt.Println(p.getAge())
	fmt.Println(p.getName())

}

//2.继承
type student struct {
	person
	class int
	gender string
}

func Inheritance(){
	fmt.Println("hello Inheritance!")

	s := student{}
	s.setName("xiaoge")
	s.setAge(22)

	s.class = 4
	s.gender = "boy"

	fmt.Println(s.getAge())
	fmt.Println(s.getName())

}

//3.多态
type Animal interface {
	eat()
}

type Dog struct {
	name string
}

func (d Dog) eat(){
	fmt.Println(d.name,"is eating something")
}

//---------------------------------------------//
type cat struct {
	name string
}

func (c cat) eat(){
	fmt.Println(c.name,"is eating something")
}


func Polymorphism() {
	fmt.Println("hello polymorphism!")
	var a1 Animal = Dog{"旺财"}
	var a2 Animal = cat{"花花"}
	a1.eat()
	a2.eat()
}

func main(){
	//encapsulation()
	//Inheritance()
	Polymorphism()
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值