首页 > 其他分享 >接口实现多态

接口实现多态

时间:2023-02-15 18:11:23浏览次数:48  
标签:Area 实现 float64 多态 接口 radius func 图形

title: 接口实现多态
date: 2023-02-06 14:59:36
tags: Golang

接口使得程序更具有灵活性和拓展性的主要原因是它实现了多态性。多态性指的是不同的类型可以实现相同的接口,并可以通过接口类型访问这些实现。

通过实现接口,不同的类型可以共享相同的行为,使得程序变得更加灵活和可拓展。例如,您可以定义一个绘制图形的接口,并且所有图形类型(如矩形、圆形、三角形等)都可以实现该接口。这使得您可以在不知道具体图形类型的情况下使用这些图形。

另外,接口还允许您在不修改已有代码的情况下添加新的功能。例如,您可以添加一个新的类型,它实现了接口中的方法,从而扩展了程序的功能。这种方式的好处是,您不需要修改现有代码,并且原有代码仍然可以正常使用。

因此,接口可以使得程序更具灵活性和拓展性,使代码更加简洁和易于维护。

阅读一下代码

package main

import (
	"fmt"
	"math"
)
//接口,包含一个计算面积方法,返回值float64类型
type Shape interface {
	Area() float64
}
//长方形
type Rectangle struct {
	width float64
	height float64
}
//计算长方行的面积方法
func (r Rectangle) Area() float64 {
	return r.height * r.width
}
//圆
type Circle struct {
	radius float64
}
//计算圆面积方法
func (c Circle) Area() float64 {
	return math.Pi * c.radius * c.radius
}
//此方法打印面积
func PrintArea(s Shape){
	fmt.Println(s.Area())
}
func main() {
	r := Rectangle{width: 10, height: 20}

	c := Circle{radius: 2}
//不同图形用相同方法
	PrintArea(r)

	PrintArea(c)
}

这段代码中定义了两个类:长方形和圆,并且分别计算这两种图形型的面积

标签:Area,实现,float64,多态,接口,radius,func,图形
From: https://www.cnblogs.com/ShenN/p/17124192.html

相关文章

  • 富文本编辑器实现从ppt中复制图片
    ​ 项目需求可发布文章需求涉及到富文本编辑器经过查阅我选择了较为简便不需要后端支持可独立完成的tinymce框架官方文档也是相当完整虽然都是全英文但是有强大的......
  • 前端报表如何实现无预览打印解决方案或静默打印
    在前端开发中,除了将数据呈现后,我们往往需要为用户提供,打印,导出等能力,导出是为了存档或是二次分析,而打印则因为很多单据需要打印出来作为主要的单据来进行下一环节的票据支......
  • vue实现图片蒙层效果(带收藏、分享功能)
    实现如下效果:当鼠标经过会出现蒙层并且有对应需求思路:蒙层采用定位鼠标经过给蒙层元素display设置为'block'鼠标移开display设置为'none',具体看代码这是渲染的图片......
  • 860~808 复杂条件查询分析,代码实现
    复杂条件查询分析:  代码实现packagecom.example.web.servlet;importcom.example.domain.PageBean;importcom.example.domain.User;importcom.example.servi......
  • 怎样的目标管理能真正实现目标?做到这3点就对了
    目标应该是每个人人生中接触最多的一样东西了,大到分分钟几百万上下的项目目标,小到一次考试。目标能不能完成,关键还是看目标管理有没有做好,做到下面这三点,不论是在职场中管......
  • 富文本编辑器实现导入ppt
    ​ ueditor粘贴不能粘贴word中的图片是一个很头疼的问题,在我们的业务场景中客户要求必须使用ueditor并且支持word的图片粘贴,因为这个需求头疼了半个月,因为前端方面因为安......
  • 数据结构与算法-第01章:顺序表-实现
    一、定义顺序表结构#defineINIT_SIZE10 ///<顺序表初始容量typedefintseqType; ///<定义顺序表元素类型///@brief顺序表结构定义typedefstructt_sqList{ s......
  • 接口
    (1)抽象类​ Delphi中的抽象类只定义行为的类,它规定了由此派生的类必须具备的某些行为。但是抽象类不实现这些行为,而必须由其派生类去实现这些行为。所以它只是一种“抽象......
  • 实现简单的`Blazor`低代码
    本篇博客只实现基本的低代码,比如新增组件,动态修改组件参数创建项目首先创建一个空的BlazorServer,并且命名LowCode.Web实现我们还需要引用一个Blazor组件库,由于作者用Ma......
  • 富文本编辑器实现导入PowerPoint
    ​ 百度ueditor新增的将word内容导入到富文本编辑框的功能怎么没有啊,...ueditor实现word文档的导入和下载功能的方法:1、UEditor没有提供word的导入功能,只能说是粘贴复......