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)
    }
    

      

  • 相关阅读:
    [洛谷P4585] [FJOI2015] 火星商店问题
    [bzoj4311] 向量
    [bzoj4977] [Lydsy1708月赛] 跳伞求生
    sdut-1153 C语言实验——求两个整数之中较大者
    sdut_1116
    sdut_1189
    汉诺塔
    二分查找
    类似二分查找算法
    [YTU]_2922(Shape系列-8)
  • 原文地址:https://www.cnblogs.com/Essaycode/p/12677699.html
Copyright © 2011-2022 走看看