黑马程序员技术交流社区

标题: 我晕了?关于Object的小问题。 [打印本页]

作者: 李哲    时间: 2012-3-27 16:14
标题: 我晕了?关于Object的小问题。
class Demo //extends Object   我本来觉得因为任何类都是object的子类,所以没必要继承,因为默认是继承的啊。但是我把//加上,就会出错。去掉就编译通过。还是别的方面的原因呢?
{
        private int num;
        Demo(int num)
        {
                this.num=num;
        }
       
        public boolean equals(Object obj)
        {
                if(!(obj instanceof Demo))
                        return false;
                Demo d=(Demo)obj;
                return this.num==d.num;
        }
        public String toString()
        {
                return "demo:"+num;
        }
}
class  ObjectDemo1
{
        public static void main(String[] args)
        {
                Demo d1=new Demo(4);
        }
}
作者: 郑洋洋    时间: 2012-3-27 16:39
你弄错了吧,你的代码是可以编译通过的
作者: 抓哇    时间: 2012-3-27 16:40
你可以翻下Object类的源代码 里面没有无参构造函数的 这个可以确定的
Demo(int num)
        {
                //super();如果写名继承 必须要调用这个 所以就会出错
                this.num=num;
        }

作者: adison    时间: 2012-3-27 16:44
厄,有啥可能,你是不是把//去掉时,忘了在文字前加上//,即//我本来觉得因为任何类都是object的子类,所以没必要继承,因为默认是继承的啊。但是我把//加上,就会出错。去掉就编译通过。还是别的方面的原因呢?,没加就会提示有非法字符,不然不可能编译不通过吧
作者: 方江    时间: 2012-3-27 16:47
没有错误啊,我编译跟运行都通过了,而且是没有继承Object类的。你再看看,是不是你没保存,然后直接运行了呢

作者: 罗闯    时间: 2012-3-27 16:48
首先说一下object:
object类是所有java类的根基类 如果在类的声明中未使用extends关键字指明其父类,则默认类为object类  所以你这里加不加注释都是一样的。
比如:
public class Person{
        ...
}
等价于

public class Person extends Object{
        ...
}
对于toString的用法:
toString 是Object类的一个实例方法,其返回值是String 类型,描述当前对象的有关信息.
我运行了 你这个程序是没有错误的。所以你检查下是不是工具的问题。
你这个程序有些地方要注意:在java源文件中可以包含多个class文件,但是这些class文件只能有一个是public类型的,并且main函数,也就是程序的入口处,必须在public类型的程序中。
你重写了toString()所以建议打印下d的值,结果:demo:4
希望对你有帮助
作者: 李哲    时间: 2012-3-27 18:18
我可能是哪出什么问题,后来编译通过。谢谢大家!
作者: 杨华威    时间: 2012-3-28 11:18
编译通过,没什么问题,你可能是编译的类名写错了。应该文件名写成:ObjectDemo1,编译的时候应该便以这个类。


作者: 姚伟涛    时间: 2012-3-28 11:28
怎么都没有错误,输出都是Demo文件里的信息,你是不是没有Demo这个文件啊




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2