面向对象的关联示例

举报
码乐 发表于 2025/03/27 10:54:49 2025/03/27
169 0 0
【摘要】 1 关联简介面向对象编程中的关联、聚合和组合,本文介绍面向对象编程中的关系概念。在网络上找到关联、组合和聚合的多种定义,但其中大多数都有复杂的解释,没有实际应用。这三个术语描述了类之间的不同关系。类之间五种关系(关联、聚合、组合、依赖、泛化)的解释及在 Go 中的实现示例。 2. 关联(Association)关联是两个类之间的连接,表示它们相互协作。常见的关联是通过指针来表示。实现代码 ...

1 关联简介

面向对象编程中的关联、聚合和组合,本文介绍面向对象编程中的关系概念。在网络上找到关联、组合和聚合的多种定义,但其中大多数都有复杂的解释,没有实际应用。

这三个术语描述了类之间的不同关系。类之间五种关系(关联、聚合、组合、依赖、泛化)的解释及在 Go 中的实现示例。

2. 关联(Association)

关联是两个类之间的连接,表示它们相互协作。常见的关联是通过指针来表示。

实现代码

		package main

		import "fmt"

		type Customer struct {
			Name string
		}

		type Order struct {
			OrderID  string
			Customer *Customer // 关联:一个订单关联到一个客户
		}

		func main() {
			customer := &Customer{Name: "Alice"}
			order := &Order{OrderID: "12345", Customer: customer}

			fmt.Printf("Order %s is associated with customer %s\n", order.OrderID, order.Customer.Name)
		}

小结
在面向对象的通用软件设计中,一个对象的功能与另一个对象功能之间的关系称为关联。请注意,两个对象之间的关联与两个类之间的继承不是一回事。关联意味着一个对象使用另一个对象或该另一个对象中的函数/方法。换句话说,关联定义为当一个对象具有对其他对象的一个或多个引用时,对象之间的关系。

以下是关联和继承之间的核心区别:

继承意味着两个对象是相同类型的对象。一个对象恰好是另一个对象的更通用或更具体版本。关联发生在两个不同的对象之间。

继承被称为 IS-A 关系,而关联被称为 HAS-A 关系。

继承的模式取决于编程语言的功能。例如,Java 不支持多重继承,但 C++ 支持多重继承。另一方面,任何语言都可以在对象之间具有一对一、一对多和多对多关联。
对象之间有两种类型的关联:组合和聚合。

【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

作者其他文章

评论(0

抱歉,系统识别当前为高风险访问,暂不支持该操作

    全部回复

    上滑加载中

    设置昵称

    在此一键设置昵称,即可参与社区互动!

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。