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