Golang如何体现面向对象三大特征之多态?

Posted Casey321

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Golang如何体现面向对象三大特征之多态?相关的知识,希望对你有一定的参考价值。

多态

基本介绍

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

快速入门

在前面的Usb接口案例,Usb usb,既可以接收相机变量,又可以接收手机变量,就体现了Usb接口多态特性。
代码如下:

package main

import(
	"fmt"
)

//定义一个接口
type Usb interface
	//声明了两个没有实现的方法
	Start()
	Stop()


type Phone struct



//让Phone实现Usb接口的方法
func (p Phone) Start()
	fmt.Println("手机开始工作了.....")

func (p Phone) Stop()
	fmt.Println("手机停止工作了.....")


type Camera struct


//让Camera实现Usb接口
func (c Camera) Start()
	fmt.Println("相机开始工作了.....")

func (c Camera) Stop()
	fmt.Println("相机停止工作了.....")


//计算机
type Computer struct



//编写一个方法Working,接受一个Usb接口类型的变量

func (c Computer) Working(usb Usb)
	//通过usb接口变量来调用Start和Stop方法
	usb.Start()
	usb.Stop()


func main()  
	computer := Computer
	phone := Phone
	camera := Camera

	computer.Working(phone)
	computer.Working(camera)

运行结果:

接口体现多态的两种形式

多态参数

Usb接口案例中,Usb usb既可以接收手机变量,又可以接收相机变量。

func (c Computer) Working(usb Usb)
	//通过usb接口变量来调用Start和Stop方法
	usb.Start()
	usb.Stop()


func main()  
	computer := Computer
	phone := Phone
	camera := Camera

	computer.Working(phone)
	computer.Working(camera)

多态数组

给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()  
	var usbArr [4]Usb 
	usbArr[0] = Phone"苹果"
	usbArr[1] = Camera"索尼"
	usbArr[2] = Phone"华为"
	usbArr[3] = Camera"尼康"
	
	for _,value := range usbArr
		value.Start()
		value.Stop()
	
  


运行结果:

博主首页链接:https://blog.csdn.net/weixin_44736475
原创不易,希望大家多多支持
如果文章对你有帮助,记得一键三连哦!❤️❤️❤️

以上是关于Golang如何体现面向对象三大特征之多态?的主要内容,如果未能解决你的问题,请参考以下文章

Golang如何体现面向对象三大特征之封装?

华为云技术分享Python 面向对象三大特征之多态

05_JavaSE之OOP--面向对象(多态)

面向对象编程三大特征4

Java中面向对象三大特性之——多态

java学习笔记之面向对象多态