public class EqualsTest {
public static <T> boolean equalTest(T o1, T o2) {
return o1.equals(o2);
}
public static void main(String[] args) {
EqualsTest et1 = new EqualsTest();
EqualsTest et2 = new EqualsTest();
System.out.println(et1.equals(et2));
System.out.println(equalTest(et1, et2));
}
public boolean equals(Object o) {
if (o instanceof EqualsTest) {
System.out.println("equals(Object)");
return true;
}
return false;
}
public boolean equals(EqualsTest et) {
System.out.println("equals(EqualsTest)");
return this.equals((Object)et);
}
}
Run Code Online (Sandbox Code Playgroud)
nic*_*ild 14
没有,这是隐含的.由于它没有显式extends任何类,因此它将隐式扩展Object.而且由于Object有一个no-arg构造函数,它将隐式调用那个.
实际上,该类可以包含一个以此形式编写的构造函数,它将是等效的:
public class EqualsTest {
public EqualsTest() {
super();
}
//the methods...
}
Run Code Online (Sandbox Code Playgroud)
如果扩展的类不具有'no-arg'构造函数(无论是隐式还是显式),则不能使用隐式构造函数.如果提供任何显式构造函数,则不会为您创建隐式的无参数构造函数.