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
}

  

最新文章

  1. session超时时间设置方法
  2. 《精通MVC5.0》路由笔记
  3. linux命令每日一练习 显示一个文件的制定行---查看命令帮助信息
  4. 【转】HTML网页中插入视频各种方法
  5. blockdev命令和blkid命令
  6. HTML <map> 标签-创建带有可点击区域的图像映射
  7. $('#checkbox').attr('checked'); 返回的是checked或者是undefined解决办法
  8. js异步收集
  9. Keil C51 与 ARM 并存的方法
  10. Android开源--MenuDrawer
  11. 201521123025《java程序设计》第13周学习总结
  12. python 多线程和多进程的区别 mutiprocessing theading
  13. FBReader阅读引擎支持的功能
  14. Odoo 12 开发手册指南(八)—— 业务逻辑 – 业务流程的支持
  15. EasyUI的Datagrid鼠标悬停显示单元格内容
  16. MySQL系列详解四:MySQL事务-技术流ken
  17. C# ThreadStart和ParameterizedThreadStart区别
  18. J2SE 8的编译
  19. 数据分析--降维--LDA和PCA
  20. 对SingleTask和TaskAffinity的理解

热门文章

  1. os shutil 模块
  2. 【MQ中间件】RabbitMQ -- RabbitMQ死信队列及内存监控(4)
  3. SpringBoot自定义配置以及IDEA配置提示
  4. 【Nginx(一)】Centos下 Nginx环境搭建
  5. TP5 验证-内置规则
  6. hdu4503 概率
  7. hdu3182 状态压缩dp
  8. POJ2044 深搜+剪枝(云彩下雨)
  9. Python 爬虫 BeautifulSoup4 库的使用
  10. CTF密码学常见加解密总结