初学java的菜鸟想问问Object是java的关键字吗?
因为我最近发现,Object类好像可以直接调用package ex11;public class DynamicBindingDemo { /**
 * @param args
 */
public static void main(String[] args) {
// TODO 自动生成方法存根
m(new GraduateStudent());
m(new Student());
m(new Person());
m(new Object());
}

public static void m(Object x){
System.out.println(x.toString());
}}class GraduateStudent extends Student{
}class Student extends Person{
public String toString(){
return "Student";
}
}class Person extends Object{
public String toString(){
return "person";
}
}
运行结果为:
Student
Student
person
java.lang.Object@14318bb
Object类里面到底有什么成员和方法
还有最后一句运行结果好像跟不同机器的结果也不一样
我的结果是:java.lang.Object@14318bb
这又是为什么呢?

解决方案 »

  1.   

    Object不是关键字,是所有类的父类
      

  2.   

    Object是一个最基础的类,所有的类都是它的派生类
    有equals方法用于比较,有notify等方法用于线程控制
    java.lang.Object@14318bb是创建的这个对象实例
    不仅仅不同的机器不一样,应该是每次运行都可能不一样
      

  3.   

    Object是所有类的父类,如果您定义类的时候没有extends一个指定的父类的话,那么就默认继承自object类具体属性和方法查下api文档就好了java.lang.Object@14318bb这个@前面是类名 后面表示对象的引用,所以每次new出来的object类在内存里的引用都不一样,这个串就不一样了person和student都重写了toString方法,所以打印出来的就是您toString方法返回的字符串,object的toString方法返回的字符串就是 "类名@引用"如果你把student类的toString方法注视掉,打印出来的就跟object这个差不多了,你可以试一下~
      

  4.   

    你到api里去找一下就知道了,是系统编写好的一个类