go学习 day207 继承

编写一个学生考试系统

package main

import (
	"fmt"
)

// 编写一个学生考试系统
type student struct {
	Name string
	Age int
	Score int
}

// 将 Pupil 和 Graduate 共有的方法也绑定到 *student
func (s *student) Showinfo()  {
	fmt.Printf("学生的姓名=%v 年龄=%v 成绩=%v",s.Name,s.Age,s.Score)
}
func (s *student) Setscore(score int)  {
	s.Score = score
}
// 给 student 新增加一个方法,那么 pupil 和 graduate 都可以使用该方法
func (s *student) Getsum(n1 int,n2 int) int {
	return n1+n2
}



// 小学生
type Pupil struct {
	student 			// 嵌入student匿名结构体
}
func (p *Pupil) testing()  {
	fmt.Println("小学生正在考试中.......")
}


// 大学生
type Graduate struct {
	student 			// 嵌入student匿名结构体
}
func (p *Graduate) testing()  {
	fmt.Println("大学生正在考试中.......")
}





func main() {
	// 小学生
	pu := Pupil{}
	pu.student.Name = "tom~~"
	pu.student.Age = 12
	pu.testing()
	pu.student.Setscore(98)
	pu.student.Showinfo()
	fmt.Println()
	fmt.Println("小学生的res=",pu.student.Getsum(23,42))


	// 大学生
	fmt.Println()
	big := Graduate{}
	big.student.Name = "marrt"
	big.student.Age = 26
	big.testing()
	big.student.Setscore(88)
	big.student.Showinfo()
	fmt.Println()
	fmt.Println("大学生的res=",big.student.Getsum(12,32))
}


需要注意:

1)简写

点击查看代码
package main

import "fmt"

type A struct {
	Name string
	age int
}

func (a *A) Sayok()  {
	fmt.Println("A Sayok里的",a.Name)
}
func (a *A) Hello()  {
	fmt.Println("A Hello里的",a.Name)
}

type b struct {
	A
}



func main() {
	// 原来写法
	var c b
	c.A.Name = "tom"
	c.A.age = 23
	c.A.Hello()
	c.A.Sayok()

	// 简写
	var d b
	d.Name = "marry"
	d.age = 33
	d.Sayok()
	d.Hello()

}

2)就近原则

点击查看代码


posted @ 2023-03-11 14:30  六月OvO  阅读(11)  评论(0编辑  收藏  举报