Go语言之继承中的方法

2020-06-06  本文已影响0人  测试探索
package main

import (
    "fmt"

)

func main(){

//  1.创建Person类型
    p1 := Person{name:"王二狗",age:30}
    fmt.Println(p1.name,p1.age) // 父类对象,访问父类的字段属性--王二狗 30
    p1.eat()  //父类的方法,吃窝窝头


    //   2.创建Student类型
    s1 := Student{Person:Person{name:"ruby",age:18},school:"第三中学"}
    fmt.Println(s1.name,s1.age) //子类对象,可以直接访问父类的字段(其实就是提升字段)--ruby 18
    fmt.Println(s1.school) //子类对象,访问自己新增的字段属性--第三中学

    s1.eat() //子类对象,访问父类的方法--父类的方法,吃窝窝头,没有重写前是该结果,重写后是下面的结果
    s1.study() //子类对象,访问自己新增的方法--子类新增的方法,学生学习啦。。。
    s1.eat()  //如果存在方法的重写,子类对象访问重写的方法--子类重写的方法:吃炸鸡和啤酒。。。
}

//1.定义一个“父类”

type Person struct {
    name string
    age int
}

//2.定义一个“子类”
type Student struct {
    Person //结构体嵌套,模拟继承性
    school string
}

//3.方法
func (p Person) eat(){
    fmt.Println("父类的方法,吃窝窝头")
}

func (s Student) study(){
    fmt.Println("子类新增的方法,学生学习啦。。。")
}

func (s Student) eat(){
    fmt.Println("子类重写的方法:吃炸鸡和啤酒。。。")
}
//结果
王二狗 30
父类的方法,吃窝窝头
ruby 18
第三中学
子类重写的方法:吃炸鸡和啤酒。。。
子类新增的方法,学生学习啦。。。
子类重写的方法:吃炸鸡和啤酒。。。
image.png
上一篇 下一篇

猜你喜欢

热点阅读