(12)Go面向对象

尽管Go中没有封装、继承、多态这些概念,但可以通过别的方式实现这个特性:

*封装:通过方法实现

*继承:通过匿名字段实现

*多态:通过接口实现

package main

import "fmt"

type person struct {
	age  int
	name string
}

// 方法
func (p *person) display() {
	fmt.Println("person:", p.age, p.name)
}

type stduent struct {
	person    //嵌套person
	id int
}

// 在stduent中重写person的display()方法,进行覆盖person:display()
func (s *stduent) display() {
	fmt.Println("stduent:", s.age, s.name, s.id)
}

func main() {
	s := stduent{person{12, "jadeshu"}, 0001}
	// 调用基类函数  ---跟其他语言比较的说法
	s.person.display()
	// 调用子类函数  ---跟其他语言比较的说法
	s.display()
}

 

posted @ 2019-11-05 23:01  jadeshu  阅读(95)  评论(0编辑  收藏  举报