zoukankan      html  css  js  c++  java
  • Golang-面向对象编程三大特性-多态

    Golang-面向对象编程三大特性-多态

    基本介绍

      变量(实例)具有多种形态。面向对象的第三大特征,在 Go 语言,多态特征是通过接口实现的。可以按照统一的接口来调用不同的实现。这时接口变量就呈现不同的形态。

    快速入门

      在前面的 Usb 接口案例,Usb usb ,既可以接收手机变量,又可以接收相机变量,就体现了 Usb 接口 多态特性。[点明]

        

    接口体现多态的两种形式


    多态参数
       在前面的 Usb 接口案例,Usb usb ,即可以接收手机变量,又可以接收相机变量,就体现了 Usb 接口 多态。
    多态数组
       演示一个案例:给 Usb 数组中,存放 Phone 结构体 和 Camera 结构体变量

    package main 
    import (
    	"fmt"
    )
    
    type Usb interface {
    	//声明了两个没有实现的方法Start()
    	Stop()
    }
    type Phone struct { 
    	name string
    }
    //让 Phone 实现 Usb 接口的方法
    func (p Phone) Start() {
    	fmt.Println("手机开始工作。。。")
    }
    func (p Phone) Stop() {
    	fmt.Println("手机停止工作。。。")
    }
    	
    type Camera struct { 
    	name string
    }
    // 让 Camera 实现	Usb 接口的方法
    func (c Camera) Start() {
    	fmt.Println("相机开始工作。。。")
    }
    
    func (c Camera) Stop() {
    	fmt.Println("相机停止工作。。。")
    }
    func main() {
    	//定义一个 Usb 接口数组,可以存放 Phone 和 Camera 的结构体变量
    	//这里就体现出多态数组
    	var usbArr [3]Usb usbArr[0] = Phone{"vivo"}
    	usbArr[1] = Phone{"小米"}
    	usbArr[2] = Camera{"尼康"}
    	
    	fmt.Println(usbArr)
    }
    

      

  • 相关阅读:
    声明
    Random类——获取随机数
    JDK_API的使用方法
    Ajax?有谁开始学习了吗?
    用xslt循环xml同一节点的不同子节点
    在Repeater控件中嵌套一个Repeater控件
    html+css的一些技巧.收集中...
    记录一下: onbeforeunload()方法, 避免未保存而关闭页面.
    简单的C# Socket编程
    不实用的UriBuilder类
  • 原文地址:https://www.cnblogs.com/Essaycode/p/12677699.html
Copyright © 2011-2022 走看看