GO语言面向对象02---继承
2024-10-19 08:27:27
package main import (
"fmt"
) type Dog struct {
Name string
Age int
} func (d *Dog)bite() {
fmt.Printf("%s要咬你了\n", d.Name)
} type PoliceDog struct {
//一行代码拥有父类的全部成员(属性+方法)
Dog //扩展出新的属性
Skill string
} //扩展出新的方法
func (pd *PoliceDog)DoPoliceJob(){
fmt.Printf("%s正在执行警务工作:%s\n",pd.Name,pd.Skill)
} //重写父类方法(overwrite)
func (d *PoliceDog)bite() {
fmt.Printf("%s要把你大卸八块了\n", d.Name)
} func main21() {
pd := PoliceDog{}
//通过子类对象访问父类成员
pd.Name = "战狼"
pd.bite() //访问子类独有成员
pd.Skill = "徒手接RPG"
pd.DoPoliceJob() //访问子类复写了的父类方法
pd.bite()
} func main() {
//pd := PoliceDog{}
//pd := PoliceDog{Dog{Name: "战狼"}, "徒手接炮弹"}
//pd := PoliceDog{Dog: Dog{Name:"战狼"}}
//pd := PoliceDog{Skill: "徒手接炮弹"}
//pd := new(PoliceDog)
pd := NewPoliceDog("战狼", 40, "徒手接炮弹")
fmt.Println(pd.Name,pd.Age,pd.Skill)
pd.bite()
pd.DoPoliceJob()
} func NewPoliceDog(name string,age int,skill string) *PoliceDog {
//pd:=new(PoliceDog)
//pd.Name=name
//pd.Age=age
//pd.Skill=skill
pd := &PoliceDog{Dog{name, age}, skill}
return pd
}
最新文章
- session超时时间设置方法
- 《精通MVC5.0》路由笔记
- linux命令每日一练习 显示一个文件的制定行---查看命令帮助信息
- 【转】HTML网页中插入视频各种方法
- blockdev命令和blkid命令
- HTML <;map>; 标签-创建带有可点击区域的图像映射
- $(&#39;#checkbox&#39;).attr(&#39;checked&#39;); 返回的是checked或者是undefined解决办法
- js异步收集
- Keil C51 与 ARM 并存的方法
- Android开源--MenuDrawer
- 201521123025《java程序设计》第13周学习总结
- python 多线程和多进程的区别 mutiprocessing theading
- FBReader阅读引擎支持的功能
- Odoo 12 开发手册指南(八)—— 业务逻辑 – 业务流程的支持
- EasyUI的Datagrid鼠标悬停显示单元格内容
- MySQL系列详解四:MySQL事务-技术流ken
- C# ThreadStart和ParameterizedThreadStart区别
- J2SE 8的编译
- 数据分析--降维--LDA和PCA
- 对SingleTask和TaskAffinity的理解