4,166
社区成员
发帖
与我相关
我的任务
分享
在Java中,所有类都直接或间接地继承自Object类。
即使没有显式地声明extends Object,但所有的类都隐式地继承了Object类。
这意味着每个类都继承了Object类的方法,如toString(), equals()等。
因此,Java中的所有类都是is-a Object,即它们都可以被视为是Object类的一个实例。
Object类的toString()方法返回该对象的字符串表示。
一般它默认返回类的名称,后跟“@”符号和该对象的哈希码的无符号十六进制表示。
这个方法用于提供对象的一种默认字符串表示。
Eclipse中查看Object类的toString()方法大致是这样的:
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
Object类的equals(Object obj)方法用于指示其他某个对象是否与此对象“相等”。
Object类中,这个方法默认是比较两个对象的引用(即地址),只有两个引用指向堆内存中的同一对象时,返回true。
equals方法被public修饰符修饰,说明它可以被任何对象调用。且它未被final修饰符修饰,意味着方法可以在子类中被覆盖。
两个对象要通过它们的属性来判断相等时,需要覆盖原equals方法。
例如,String类的equals方法就覆盖了原equals方法,体现了子类特有的特性,不是简单地比较引用,而是比较字符串内容是否完全相同。
在子类中复用父类的代码主要有两种方式:
1.继承:子类继承父类的方法和属性,可以直接调用父类(非private)的方法。
2.方法调用:如果子类没有继承父类,或者要复用另一个非父类类中的代码,可在子类中创建该类的实例,并通过实例调用需要复用的方法。
不是,继承并不是复用代码的唯一方式。还有其他几种常见的复用代码的方法:
1.组合:通过在类中创建其他类的实例(作为字段)来复用代码。这种方式允许新类获得被包含类的功能,而不必继承它的接口。
2.委托:与组合类似,但通常指通过在新类中定义方法来调用被包含类(也称为“助手”或“代理”)的方法,以执行特定的任务。
3.接口:定义一组方法规范,不同的类可以实现这些方法,以复用共同的接口。
4.静态方法和类:定义静态方法和静态内部类,允许在不需要创建对象的情况下复用代码。
5.框架和库:使用现成的框架和库,这些框架和库提供了大量可复用的代码和模式。