面向对象中的IS A和HAS A 问题
2008-07-23 22:26
246 查看
“is a”代表的是类之间的继承关系,比如PC机是计算机,工作站也是计算机。PC机和工作站是两种不同类型的计算机,但都继承了计算机的共同特性。
在C#开发时,应将pc与工作站设计成不同的类,然后继承于计算机这个类。
再比如,苹果不水果中的一种,桃子也是水果中的一种,区别是它们属于不同的水果类别,但都继承了水果的共同特性,都有水果名称,重量,形状,色彩等。
在实际开发中,需要把这两种不同的水果设计成不同的类,分别继承于水果这个类。苹果与桃子都是水果的一个具体实例,水果只是一个抽象类。
“has a”代表的是对象和它的成员的从属关系。同一种类的对象,通过它们的属性的不同值来区别。比如一台PC机的操作系统是Windows,另一台PC机的操作系统是Linux。操作系统是PC机的一个成员变量,根据这一成员变量的不同值,可以区分不同的PC机对象。
再比如张三和李四都是人,但他们的名字不一样,可以以此区分这两个具体的人。名字应该作为人的成员变量。如果将名字叫“张三”的人和名字叫“李四”的人分别定义成两个类,均继承“人”这个类,显然是不合理的。
在C#开发时,应将pc与工作站设计成不同的类,然后继承于计算机这个类。
再比如,苹果不水果中的一种,桃子也是水果中的一种,区别是它们属于不同的水果类别,但都继承了水果的共同特性,都有水果名称,重量,形状,色彩等。
在实际开发中,需要把这两种不同的水果设计成不同的类,分别继承于水果这个类。苹果与桃子都是水果的一个具体实例,水果只是一个抽象类。
“has a”代表的是对象和它的成员的从属关系。同一种类的对象,通过它们的属性的不同值来区别。比如一台PC机的操作系统是Windows,另一台PC机的操作系统是Linux。操作系统是PC机的一个成员变量,根据这一成员变量的不同值,可以区分不同的PC机对象。
再比如张三和李四都是人,但他们的名字不一样,可以以此区分这两个具体的人。名字应该作为人的成员变量。如果将名字叫“张三”的人和名字叫“李四”的人分别定义成两个类,均继承“人”这个类,显然是不合理的。
相关文章推荐
- 面向对象_形式参数是类名的问题
- 面向对象解决球的反弹问题
- 面向对象_is-a,has-a,like-a是什么
- 面向对象对象的状态和行为如何获得的问题
- C++沉思录第八章算数表达式树的面向对象问题的分析
- 数独求解——面向对象解决算法问题(二)
- Java之面向对象相关问题集
- python 面向对象中一些常用内建函数【getattr(), setattr(). hasattr(). delattr()...】
- 蚂蚁过杆问题(二) ------java面向对象处理
- ActionScript 3.0 Step By Step系列(五):走在面向对象开发的路上,以类为基础去思考编程问题
- 黑马程序员__用面向对象思想分析问题小结
- 面向对象和静态方法与非静态方法的变量调用问题
- 我的第一篇博客,java面向对象来解决简单的问题--杭电2001
- 面向对象常见问题总结
- JAVA拆装箱问题到面向对象原理思考
- python面向对象问题
- 面向对象继承实例(a如何继承b问题)(自写)
- 面向对象继承实例(a如何继承b问题)(自写)
- JAVA面向对象问题的汇总
- java学习日记_42:面向对象之抽象的一点小问题