关联(Association)
Association 指的是类之间的协作关系,其中一个类与另一个类进行交互,但它们之间并没有父子关系。Association 通常示意一个类须要另一个类的某些服务或数据,或者示意类之间有某种独特的特色或属性。
继承(Inheritance)
Inheritance 指的是从父类到子类的属性和办法的传递过程,子类能够继承父类的属性和办法,并能够在此基础上增加本人的属性和办法。Inheritance 次要是为了实现代码的重用,防止反复编写代码。在 Inheritance 中,子类和父类之间存在一种父子关系,子类从父类继承了所有的个性,包含属性和办法。子类能够增加新的个性或办法,也能够笼罩或重载继承的办法。
例子
以下通过图书馆管理系统为例来阐明 Association 和 Inheritance 的区别:
Association 关系
图书馆类 Library
和读者类 Reader
之间存在一种协作关系,每个读者能够在图书馆中借阅、偿还图书。此时 Library
类和 Reader
类之间就存在 Association 关系。
┌───────────────┐ ┌───────────────┐│ Library │ │ Reader │├───────────────┤ ├───────────────┤│ │◀─────────┤ ││ borrow_book │ │ borrow_book ││ return_book │ │ return_book ││ search_book │ │ ││ │ └───────────────┘└───────────────┘
Inheritance 关系
在图书馆管理系统中,所有书籍都有一些独特的特色,如书名、作者、出版社等等。因而能够定义一个 Book
类作为所有具体书籍类的父类,每个具体书籍类能够继承 Book
类的属性和办法。此时,具体的书籍类与 Book
类之间存在 Inheritance
关系。
┌───────────────┐│ Book │├───────────────┤│ title ││ author ││ publisher ││ price ││ │└───────────────┘ ▲ │┌───────────────┐│ Novel │├───────────────┤│ genre ││ language ││ is_best_seller││ ISBN │└───────────────┘ ▲ │┌───────────────┐│ Textbook │├───────────────┤│ subject ││ level ││ edition ││ ISBN │└───────────────┘