Golang 面向对象

继承

package main

import (
    "fmt"
)

type People struct {
    name   string
    age    int
    weight int
}

type Student struct {
    People
    specialty string
}

// define sayHi method on People struct
func (p People) sayHi() {
    fmt.Println(1)
}

func main() {
    p := People{"syy", 1, 2}
    s := Student{People{"syy", 1, 2}, "Seecialty"}
    p.sayHi()
    s.sayHi()
}

下面的方法,主要作用是在People结构体上定义一个sayHi的方法

// define sayHi method on People struct
func (p People) sayHi() {
    fmt.Println(1)
}

People 结构体定义的,但是Student也有这个方法。或者可以说成"人可以问好,学生当然也可以问好"。

所以Strudent的sayhi方法是从People继承过来的。

复写

通过上面的代码,知道了继承,我们再往代码里面加入下面的代码

// define sayHi method on Student struct
func (s Student) sayHi() {
    fmt.Println(2)
}

这段代码的作用是 在Student结构体上也增加一个sayHi的方法。

通过运行,可以看到输出的是2 而不是原来的1

故,Student的sayHi方法复写了People sayHi的方法。

时间: 2024-12-16 15:50:51

Golang 面向对象的相关文章

golang面向对象

golang中并没有明确的面向对象的说法,实在要扯上的话,可以将struct比作其它语言中的class. 类的声明: //声明一个类 type People struct { Name string Sex int32 Address string } 这样就声明了一个类,其中没有public.protected.private的的声明.golang用另外一种做法来实现属性的访问权限:属性的开头字母是大写的则在其它包中可以被访问,否则只能在本包中访问.类的声明和方法亦是如此. 类方法声明: //

golang面向对象初识

struct是变量的集合 interface是方法的集合 struct与interface都支持匿名字段, 换言之, 支持组合实现继承. golang的struct与C++的class一样, 只能声明变量, 不能初始化. golang的错误机制就是借且多值返回将错误作为结果返回. 所以关键API调用后, 备必检查err结果. golang的"."运算符很聪明, 会在变量及其指针间智能切换. 但定义method, 一般会将指针做为ReceiveType. 除非是明确不改调用对象的值, 即

golang面向对象编程思想

抽象介绍: 在定义一个结构体的时候,实际上就是把一类事物的共有属性(字段)和行为(方法) 提取出来,形成一个物理模型(模板),这种研究问题的方法称为抽象. 封装: 把抽象出的字段和对字段的操作封装在一起,数据被保护在内部,程序的其它包只有通过被授权的操作(方法),才能对字段进行操作. 1)将结构体.字段(属性)的首字母小写 2)给结构体所在包提供一个工厂模式的函数,首字母大写,类似一个构造函数 3)提供一个首字母大写的Set方法(类似其它语言的public),用于对属性判断并赋值 model.g

golang 碎片整理之 结构体

什么是结构体? 结构体(struct)是用户自定义的类型,它代表若干字段的集合,可以用于描述一个实体对象,类似Java中的class,是golang面向对象编程的基础.结构体的概念在软件工程上的旧术语是ADT(抽象数据类型: Abstract Date type).在c++它也是存在,并且名字也是struct,在面向对象的编程语言中,跟一个无方法的轻量级类一样.因为在Go语言中没有类的概念,所以在go中结构体有着很重要的地位. 如何定义一个结构体 type Coordinate struct {

面向对象之结构体1

Golang语言面向对象编程说明: 1)Golang也支持面向对象编程(OOP),但是和传统的面向对象编程有区别,并不是纯粹的面向对象语言.所以我们说Golang支持面向对象编程特性是比较准确的. 2)Golang没有类(class),Go语言的结构体(struct)和其它编程语言的类(class)有同等的地位,你可以理解Golang是基于struct来实现OOP特性的. 3)Golang面向对象编程非常简洁,去掉了传统OOP语言的继承.方法重载.构造函数和析构函数.隐藏的this指针等等. 4

个人对golang的面向对象的理解------接口(interface)

golang是面向对象语言,但是他并没有class之类的关键字,他是通过struct和interface组合实现了面向对象的概念. 转载请注明出处:http://www.cnblogs.com/SSSR/p/6351661.html 在golang中面向对象的实现顺序: 1.先定义struct,是对象的属性值,如: type Person struct { id int name string} 2.定义对象需要实现的函数,如: func (self Person) codingEveryday

Golang(笔记) 面向对象

package main import ( "fmt" ) //对象定义 type Rect struct{ x,y float64 width ,height float64 } //对象方法实现 func (r *Rect) Area()float64{ return r.width*r.height } //Go语言没有构造函数的概念 //对象的创建通常交由一个全局的创建函数NewXXX来命名 标识构造函数 func NewRect(x,y,width,height float6

golang的面向对象实现

GoLang的面向对象 通过golang实现面向对象的过程, 以及golang的继承关系 定义了动物, 定义了鸟类,鱼类, 最后的对象是 燕子, Nimo package main import "fmt" type Animal interface { Eat() Play() } type animal struct { name string } type Bird interface { Animal //匿名嵌入接口 Fly() } type bird struct { an

Go_15:GoLang中面向对象的三大特性

有过 JAVA 语言学习经历的朋友都知道,面向对象主要包括了三个基本特征:封装.继承和多态.封装,就是指运行的数据和函数绑定在一起,JAVA 中主要是通过 super 指针来完成的:继承,就是指 class 之间可以相互继承属性和函数:多态,主要就是用统一的接口来处理通用的逻辑,每个 class 只需要按照接口实现自己的回调函数就可以了. 作为集大成者的 Go 语言,自然不会在面向对象上面无所作为.相比较 java.C#.C++ 等面向对象语言而言,它的面向对象更简单,也更容易理解.下面,我们不