已有101人关注
Java 10.2 Object类
发表在Java图书答疑 2019-11-07 《Java从入门到精通(第4版)》第10章 接口、继承与多态
是否精华
版块置顶:

老师您好:《Java从入门到精通》第五版,177页,例10.3在项目中创建ObjectInstance类,在类中重写O贝加尔侧类的toString()方法,并在主方法中输出该类的实例对象。课本给出的代码如下:


public class ObjectInstance {

public String toString() {                                                                              // 重写toString()方法

return "在" + getClass().getName() + "类中重写toString()方法";

}

public static void main(String[] args) {

System.out.println(new ObjectInstance());                                          // 打印本类对象

}

}

我对这段代码的理解是 主方法里创建了ObjectInstance类的对象,此时ObjectInstance类自动调用了构造方法toString(),因为执行的就是toString()方法体中的内容。但在构造方法那一章节中有过说明,类的构造方法是需要跟类同名的,在这里却没有同名,然后我就又想不通了。



分享到:
精彩评论 4
根号申
学分:4736 LV12
TA的每日心情
2021-07-16 23:48:46
2019-11-07
沙发

如果不给类创建构造方法,Java虚拟机就会自动给类创建一个无参构造方法,这个构造方法其实是超级父类Object提供的。

toString()是成员方法,这个方法也是超级父类Object提供的,子类可以重写。System.out.println()会默认调用参数的toString()方法,就可以打印出你在代码里写的的结果了。
stq20192019
学分:62 LV3
2019-11-07
板凳

根号申 发表于2019-11-07 13:59

如果不给类创建构造方法,Java虚拟机就会自动给类创建一个无参构造方法,这个构造方法其实是超级父类Object提供的。

toString()是成员方法,这个方法也是超级父类Object提供的,子类可以重写。System.out.println()会默认调用参数的toString()方法,就可以打印出你在代码里写的的结果了。

刚开始学不久,这句话 System.out.println()会默认调用参数的toString()方法 还是没看懂。

public class ObjectInstance {

public String toString() { // 重写toString()方法

return "在" + getClass().getName() + "类中重写toString()方法";

}

public String Anything() { 

return "你" +  "好";

}

public static void main(String[] args) {

System.out.println(new ObjectInstance()); // 打印本类对象

}

}

我在里面重新加了Anything()方法,运行结果没有变,还是调用的toString()方法而没有调用新加的Anything()方法 ,是因为toString()方法是Object类中已经定义好的方法的缘故吗?

根号申
学分:4736 LV12
TA的每日心情
2021-07-16 23:48:46
stq20192019
学分:62 LV3
2019-11-07
4L

根号申 发表于2019-11-07 15:18

image.png

image.png

image.png

我模模糊糊好像明白了一些,当实例化ObjectInstance类时,对象调用的是toString()方法而没有调用我自定义的Anything()方法是因为println()方法中强制规定的,即便是我把Anything()方法换成Object类中已定义的方法,对象依然还是会调用toString()方法,是这么理解吗

首页上一页 1 下一页尾页 4 条记录 1/1页
手机同步功能介绍
友情提示:以下图书配套资源能够实现手机同步功能
明日微信公众号
明日之星 明日之星编程特训营
客服热线(每日9:00-17:00)
400 675 1066
mingrisoft@mingrisoft.com
吉林省明日科技有限公司Copyright ©2007-2022,mingrisoft.com, All Rights Reserved长春市北湖科技开发区盛北大街3333号长春北湖科技园项目一期A10号楼四、五层
吉ICP备10002740号-2吉公网安备22010202000132经营性网站备案信息 营业执照