关于面向对象编程:面向对象关联Association和继承Inheritance的区别
关联(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 │└───────────────┘