美文网首页
golang 继承 , 封装, 多态解释

golang 继承 , 封装, 多态解释

作者: husky_1 | 来源:发表于2018-12-27 20:24 被阅读0次

用实现计算机加减法功能为例

  • 继承

golang 中的继承是通过结构体中的匿名字段来实现

例:定义一个 BaseNum 对象 (结构体),作为父类,Add 和Sub 对象(结构体)中包含了BaseNum 匿名字段, 此时 Add 和Sub 就是BaseNum的子类

type BaseNum struct {
     num1 int
     num2 int
} // BaseNum 即为父类型名称

type Add struct {
    BaseNum
} //加法子类, 定义加法子类的主要目的, 是为了定义对应子类的方法

type Sub struct {
    BaseNum
} //减法子类

  • 封装

子类Add 和Sub 都有计算的方法 Opt

func (a *Add)Opt()(value int) {
    return a.num1 + a.num2
}//加法的方法实现

func (s *Sub)Opt()(value int) {
    return s.num1 + s.num2
}//减法的方法实现

此时我们可以定义一个接口 , 接口申明一个Opt的方法, Add 和Sub
实例化该方法, 就实现了封装功能

type Opter interface { //接口定义
    Opt()int      //封装, 归纳子类方法, 注意此处需要加上返回值, 不然没有办法输出返回值(因为方法中使用了返回值)
}
  • 多态

定义一个函数, 将Opter 作为函数参数传入, 此时只要实现该结构申明函数的对象都可以直接调用该函数, 即 实现了多态

func MultiState(o *Opter)(value int) { //多态定义, 可以简单理解为以接口作为形参的函数, 方便学习
value = o.Opt()
return
}

主函数实现:

func main(){
// 继承
 data:= BaseNum{2,3}
    var a Add = Add{data}
    var b Sub= Sub{data}
   
//使用接口
    var i Opter
    i = &a
    value := i.Opt()
     i = &b
   value := i.Opt()

//使用多态
    value := MultiState(&a)
    value := MultiState(&b)
//输出测试
    fmt.Println(value)
}

注: 因为Add 和Sub 对接口方法的实现是用的 指针
func (a *Add)Opt()(value int)
func (a *Sub)Opt()(value int)

所以在多态传参的时候, 使用的是对象的地址

相关文章

  • golang 继承 , 封装, 多态解释

    用实现计算机加减法功能为例 继承 golang 中的继承是通过结构体中的匿名字段来实现 例:定义一个 BaseNu...

  • 【Golang】封装,继承与多态

    面向对象的基本思想主要体现在封装,继承以及多态等的设计与运用上。这篇文章主要讲述,封装、继承与多态在golang中...

  • iOS开发之一OC语言的特性

    三大特性:封装、继承、多态 一、封装(成员变量的封装) 二、继承 三、多态(多种形态)

  • java多态

    概述 面向对线的四个基本特征:抽象,封装,基础,多态。抽象,封装,继承是多态的基础,多态是抽象,封装,继承的表现 ...

  • Python基础-day12

    list ​ 封装 ​ 继承 面向对象的三大特性 ​ 封装 继承 多态 封装 ​ 生活里 ​ ...

  • 31-封装、继承、多态

    封装、继承、多态 面向对象编程有三大重要特征:封装、继承和多态。 继承 继承机制实现了代码的复用,多个类公用的代码...

  • Java的基本特性

    关系 Java的四个基本特性分别是抽象,封装,继承,多态。概括起来可以这么理解,抽象、封装、继承是多态的基础,多态...

  • iOS基础 - oc的三大特性

    封装、继承、多态 oc是面向对象的程序设计语言,而面向对象的三大特征:封装、继承、多态。 封装 没有绝对的封装,只...

  • Java笔记

    Java基础 Java面试通关要点 1.面向对象的特征 封装 继承 多态 封装继承多态 2.final,final...

  • iOS 语言三大特性

    封装 、 继承、多态OC学习篇之---类的三大特性(封装,继承,多态) - Android应用安全防护和逆向分析-...

网友评论

      本文标题:golang 继承 , 封装, 多态解释

      本文链接:https://www.haomeiwen.com/subject/mfbdlqtx.html