第四周课前思考

1. 为什么说 Java 中的所有类都 is-a Object?

因为 Object 是所有类的最终父类,其他类都直接或间接继承自 Object 类。

2. 在 JDK 文档中查找 Object 的 toString 方法。说一说,该方法有什么用?使用 Eclipse 查看 Object 的 toString 方法的代码,结合代码说说该代码的用途。

该方法可以返回该对象的字符串表示形式。

toString 方法的代码如下:

public String toString() {
    return getClass().getName() + "@" + Integer.toHexString(hashCode());
}

调用 getClass() 获取对象的运行时类,调用 getName() 返回类的全限定名,hashCode() 返回对象的哈希码,Integer.toHexString() 将其转换为十六进制字符串。

3. 在 IDE 中查看 Object 的 equals 方法的代码,说说 equals 的用途。该方法被什么修饰符修饰,意味着什么?什么时候需要覆盖 equals 方法?结合 String 类的 equals 方法说说覆盖如何体现子类特有的特性?

Equals 方法的代码如下:

public boolean equals(Object obj) {
    return (this == obj);
}

equals 方法用于判断两个引用是否指向堆内存中的同一个对象实例。该方法被 public 修饰,意味着所有类都可以访问并重写,并且让所有对象都能通过统一的 equals 方法进行比较。当 equals 方法无法满足业务场景对 "相等性" 的定义时,就需要重写 equals 方法。String 类重写 equals 方法,将比较逻辑从 Object 类默认的内存地址比较,改为基于自身字符序列内容的比较,通过判断字符数组长度和逐个字符是否一致来确定相等性。

4. 如果在子类中想要复用父类的代码,要怎么办?

子类中复用父类的代码可以通过 super 关键字实现。

5. 可选:继承是复用代码的唯一方式吗?

不是,继承只是 Java 中代码复用的方式之一,而非唯一方式,除继承外,还有组合、接口等方式。

posted @ 2025-09-23 13:31  Writing  阅读(9)  评论(0)    收藏  举报