GO-面向对象5-接口的继承

定义两个父类接口

//定义动物接口:所有动物都会新陈代谢,都会挂掉
type Animal interface {
    //新陈代谢:吃进来+排出去,shit就是翔啊~
    Eat(food string) (shit string)
    //GAME OVER
    Die()
}

//定义战士接口,会进攻和防守
type Fighter interface {
    //进攻并造成对手掉血
    Attack() (bloodLoss int)
    Defend()
}

显式地继承父类接口

//野兽接口,拥有动物的一切特征
//野兽接口,拥有战士的一切特征
type Beast interface {
    //野兽接口继承动物接口
    Animal
    //野兽接口继承斗士接口
    Fighter
    Run()
}

隐式继承父类接口

type Beast interface {
    //显式继承动物接口
    Animal

    //隐式继承斗士接口:没有明确地说继承斗士,但事实上定义了其全部抽象方法
    Attack() (bloodLoss int)
    Defend()

    //野兽特有的方法
    Run()
}

实现Beast接口

type Tiger struct {
    name string
    food string
    shit string
    power int
}

/*实现野兽的全部方法才算是野兽*/
func (t *Tiger)Eat(food string) (shit string)  {
    fmt.Printf("本王正在享用%s,并撇下%s\n",t.food,t.shit)
    return t.shit
}
func (t *Tiger)Die()  {
    fmt.Printf("大猫%s也有狗带的一天啊,啊啊啊啊...\n",t.name)
}
func (t *Tiger)Attack() (bloodLoss int)  {
    fmt.Printf("本王咬你,掉血%d毫升\n",t.power)
    return t.power
}
func (t *Tiger)Defend()  {
    fmt.Println("躺在地上举高高,我不是在卖萌,而是在防守")
}
func (t *Tiger)Run()  {
    fmt.Println("本王在奔跑")
}

使用接口实例

func main() {

    tiger := &Tiger{"东北虎", "其它野兽", "虎翔", 1024}

    var animal Animal
    var fighter Fighter
    var beast Beast

    //老虎既是动物,又是斗士,又是野兽
    //用子类实现去给父类接口赋值
    animal = tiger
    fighter = tiger
    beast = tiger

    //调用父类接口方法
    animal.Eat("食物")
    animal.Die()
    fighter.Attack()
    fighter.Defend()
    beast.Run()
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值