java中Object类是怎么回事
Object类的作用:m a r k - t o- w i n: 在java中,因为所有的类都有共性,所以java的缔造者们把java设计成这样:所有的类都是Object类的直接或间接子类,而且把上述所有类的共性都放在Object类中。这样就可以达到代码重用。All classes in java are subclasses of Object class。
马克- to-win:马克 java社区:防盗版实名手机尾号: 73203。
Object类的equals和toString的用法:
下面一组两个例子,马克-to-win:第一个例子是用的父类Object的equals和toString方法,Object的equals是比较对象在内存当中的地址,当然不一样了。而第二个例子Company的equals方法是自己写的,比较的他们的name属性,只要name一样,对象的equals返回的就是真。println (c1);会导致c1的toString被调用(这是语法),第一个例子中c1因为没有toString方法,所以就用基类Object的toString方法。另外,Object的 toString方法打印出来就是Company@1b67f74,这是Sun公司编的。而后面一个例子的toString方法时咱们自己编的。
例:2.1.1---本章源码
class CompanyMark_to_win {
private String name;
CompanyMark_to_win(String name) {
this.name = name;
}
/*
public String toString() {
return name;
}
public boolean equals(Object o) {
if (!(o instanceof CompanyMark_to_win))
return false;
CompanyMark_to_win c = (CompanyMark_to_win) o;
return name.equals(c.name);
}
*/
}
public class Test {
public static void main(String[] args) {
CompanyMark_to_win c1 = new CompanyMark_to_win("Abc");
CompanyMark_to_win c2 = new CompanyMark_to_win("Abc");
CompanyMark_to_win c3 = new CompanyMark_to_win("xyz");
System.out.println("c1.equals(c2): " + c1.equals(c2));
System.out.println("c1.equals(c3): " + c1.equals(c3));
System.out.println(c1);
}
}
结果:
c1.equals(c2): false
c1.equals(c3): false
CompanyMark_to_win@1b67f74
例2.1.2---本章源码
class CompanyMark_to_win {
private String name;
CompanyMark_to_win(String name) {
this.name = name;
}
/*System.out.println会调用toString这个方法。暂时死记住,这是语法*/
public String toString() {
return name;
}
public boolean equals(Object o) {
/*下句话,假如不是CompanyMark_to_win类型,马克-to-win:就返回假*/
if (!(o instanceof CompanyMark_to_win)) return false;
CompanyMark_to_win c = (CompanyMark_to_win) o;//downcast,向下转型
return name.equals(c.name);//这个equals是String的方法
}
}
public class Test {
public static void main(String[] args) {
CompanyMark_to_win c1 = new CompanyMark_to_win("Abc");
CompanyMark_to_win c2 = new CompanyMark_to_win("Abc");
CompanyMark_to_win c3 = new CompanyMark_to_win("xyz");
System.out.println("c1.equals(c2): " + c1.equals(c2));//这个equals会调用子类CompanyMark_to_win的方法,马克-to-win:
System.out.println("c1.equals(c3): " + c1.equals(c3));
System.out.println(c1);//这个println会调用子类CompanyMark_to_win的toString方法
}
}
result is:
c1.equals(c2): true
c1.equals(c3): false
Abc