前言:
经常发现有些朋友对类和对象 ,继承关系(父类,子类关系),混为一谈,包括面向对象中的类和对象到底是什么关系,为什么会从类变成对象。项目的场景是我在面试时经常碰到的场景。
场景再现1:
问:举个现实中的继承关系或父子类关系
答:父亲和孩子
分析:
这个回答不能说不对,但至少不够明确,正确应该是 动物-哺乳类,父亲和孩子孩子是继承了父亲的一些属性但这个关系更新是人类中的两个具体的对象关系而不是父类,子类的关系,子类应该是继承父类的所有属性,并有自己特有的属性,且继承关系是类和类之间的关系。
场景再现2:
问:举个现实中类和对象的关系
答:车 ----宝马车
分析:
这个就是一个典型的继承关系 ,但现实中往往很多人认为这个是一个类和对象的关系,这个忽略掉了一个关键的点 对象是一个实际物体,而不是一类物体,宝马车是一类物体。正确的应该是 车 --某一辆具体的车
场景再现3:
问:类怎么变成了对象
答1:类 new一下就变成了对象
答2:对象是类的实例
分析:
这个说法没啥问题,但却忽略了这个问题的本质,类怎么变成一个对象实际就是将类的属性进行具体化就会得到一个具体的对象。所谓的具体化就是给属性进行赋值。就面向对象的概念而言每个对象应该都是特有的,但在实际的程序实现中定义的属性太少,导致虽然是不同的对象,但所有的属性值都一样。举个列子 人类中两个叫的张三 身高一样的 人。 在程序实现时人类有两个属性:姓名 身高。这个两个对象属性值就会一样,但其实本质是这个程序实现中属性值太少导致的。
转发说明出处
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档