多态及体现 |学习笔记

简介: 快速学习多态及体现

开发者学堂课程【Go 语言核心编程 - 面向对象、文件、单元测试、反射、TCP 编程多态及体现】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/626/detail/9705


多态及体现

 

基本内容

一、多态特征

二、接口体现多态特征

 

一、多态特征

1、基本介绍

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

2、快速入门

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

//编写一个方法 Working 方法,接收一个 Usb 接口类型变量只要是实现了 Usb 接口(所谓实现 Usb 接口,就是指实现了 Usb 接口声明所有方法)

func(c Computer)Working(usb Usb){//usb 变量全根据传入的实参,来判断到底是 Phone,还是 Camera

//通过usb接用变量来调用 Start 和 Stop 方法 usb 接口变量就体现出多态的特点

usb.Start()

usb.Stop()

}

 

二、接口体现多态特征

接口体现多态的两种形式

1、多态参数

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

2、多态数组

(1)演示一个案例:给Usb数组中,存放Phone结构体和Camera结构体变量(实现了该接口任何结构体的变量)

案例说明:利用多态特点来实现

func main({

//定义一个Usb接口数组,可以存放Phone和Camera的结构体变量

//这里就体现出多态数组

var usbArr [3]Usb

usbAr[0] = Phone{"vivo"}

usbAr[1]=Phone{"小米"}

usbAr[2]=Camera{"尼康"}

fmt.Println(usbArr)

此时,运行结果如下:

image.png

(2)Phone 还有一个特有的方法 call(),请遍历Usb数组,如果是 Phone 变量,除了调用 Usb 接口声明的方法外,还需调用 Phone 特有方法 call

相关文章
|
15天前
什么是多态?面向对象中对多态的理解
本文介绍了面向对象编程中的多态概念,包括其定义、优点以及编译时多态和运行时多态的具体实现方式。通过实例展示了函数重载、运算符重载、虚函数、接口和抽象类的应用,帮助读者深入理解多态的灵活性和可扩展性。
45 6
|
1月前
|
编译器 C++
C++入门12——详解多态1
C++入门12——详解多态1
36 2
C++入门12——详解多态1
|
1月前
|
C++
C++入门13——详解多态2
C++入门13——详解多态2
79 1
|
4月前
|
存储 编译器 C++
|
5月前
|
编译器 C++
【C++】学习笔记——多态_2
【C++】学习笔记——多态_2
28 0
|
5月前
|
编译器 C++
【C++】学习笔记——多态_1
【C++】学习笔记——多态_1
26 0
C++学习笔记_04抽象类、多态 2021-04-15
C++学习笔记_04抽象类、多态 2021-04-15
|
编译器 C++
【C++】多态学习总结
多态就是调用一个函数时,展现出多种形态。比如买火车票这件事,普通人是全价,学生是半价,这就是一种多态。 多态分为静态的多态和动态的多态:
|
6月前
|
编译器 C++
C++零基础教程(什么是多态)
C++零基础教程(什么是多态)
55 0
|
Java
Java面向对象之多态
Java面向对象之多态
61 0