1.为什么说Java中的所有类都is-a Object?
在Java中的所有类都是从Object这个类继承出来的,Object类是所有类的源头,是所有类的父类。Object类定义和实现了所有类的共同行为.
2.在JDK文档中查找Object的toString方法。说一说,该方法有什么用?使用Eclipse查看Object的toString方法的代码,结合代码说说该代码的用途。
toString方法可以返回一个“文本表示”此对象的字符串。然而对于默认的toString()方法往往不能满足需求,需要覆盖这个方法。
对于默认情况,即未被重写的情况。会默认返回:全类名(包名+类名)+@+哈希值的十六进制
以下代码为Object类中toString方法的源代码:
而且Object方法本身的toString方法也是比较有用的,它可以指明这个类的内存地址,在一些时候可以分辨两个表现得一样的对象究竟是同一个对象还是不同的。
而对于被重写的情况,就以这次pta的题目为例:
在本题中,我在Person类中重写的toString代码,返回的是我需要的字符串。
***********注意细节:当输出一个对象时,toString方法会默认被调用
3.在Eclipse中查看Object的equals方法的代码,说说equals的用途。该方法被什么修饰符修饰,意味着什么?什么时候需要覆盖equals方法?结合String类的equals方法说说覆盖如何体现子类特有的特性?
equals();的用途:指示某个对象是否“等于”此对象。
该方法被public修饰,可被Object类的对象调用。
你想比较两个对象是否相等的时候用到,默认的话是直接比较两个类的地址,比如你new两个对象a、b使用equals方法是返回的是不相等因为他们在内存中的地址是不同,假设类中有x、y两个int参数你规定如果x、y相等的情况说明a、b相同,你就需要重写这个方法了。
4.如果在子类中想要复用父类的代码,要怎么办?
使用super();方法
5.可选:继承是复用代码的唯一方式吗?
继承不是代码复用唯一方式,类之间除了继承外,还有部分与整体的关系,即聚集关系,如飞机与发动机类,从纯代码复用角度讲,聚集比继承好,避免了继承与封装的矛盾,对于聚集,一个类只有一个接口,即类的实例用户接口(public),而对于继承,除了实例用户接口还有派生类接口(public和protected)。