3个回答
展开全部
因为没有显式提供构造方法(也叫构造器或构造函数),所以,java会自动为你提供一个默认构造方法(无参构造方法) ,而new ObjectInstance()就是调用的这个默认构造方法来创建对象的。
同时类ObjectInstance覆盖(重写)了toString方法,这个方法的作用就是把类ObjectInstance的对象转换成一个字符串。
在这个方法内部调用了从Object类继承的getClass方法,getClass方法会返回一个类Class(注意这里的Class表示一个类,实际上Class还是一个泛型类)的对象,这个Class类的对象保存了类ObjectInstance的元数据(比如,ObjectInstance类有哪些属性、哪些方法、超类是谁、实现了什么接口等)。而Class类的对象有一个getName方法,这个方法会返回Class对象表示的类的类名,因为现在的Class类的对象保存的是类ObjectInstance的元数据(即它代表了类ObjectInstance),所以getName方法返回的是类ObjectInstance的类名"ObjectInstance"。
而当调用println输出一个类ObjectInstance的对象时,会先自动调用这个对象的toString方法,将对象转换为字符串后再输出。所以,输出的是ObjectInstance类的类名。
同时类ObjectInstance覆盖(重写)了toString方法,这个方法的作用就是把类ObjectInstance的对象转换成一个字符串。
在这个方法内部调用了从Object类继承的getClass方法,getClass方法会返回一个类Class(注意这里的Class表示一个类,实际上Class还是一个泛型类)的对象,这个Class类的对象保存了类ObjectInstance的元数据(比如,ObjectInstance类有哪些属性、哪些方法、超类是谁、实现了什么接口等)。而Class类的对象有一个getName方法,这个方法会返回Class对象表示的类的类名,因为现在的Class类的对象保存的是类ObjectInstance的元数据(即它代表了类ObjectInstance),所以getName方法返回的是类ObjectInstance的类名"ObjectInstance"。
而当调用println输出一个类ObjectInstance的对象时,会先自动调用这个对象的toString方法,将对象转换为字符串后再输出。所以,输出的是ObjectInstance类的类名。
更多追问追答
追问
为什么会自动调用重写的toSpring方法?
追答
因为你在用println输出一个对象啊。
println函数有一个重载版本是println(Object o),你调用的正是这个重载。在这个重载函数内部的某个地方会调用o.toString()将对象转换为字符串(就是在这里调用的toString),然后输出。
直白地讲,调用对象的toString方法,就是方法println为你提供的功能。
展开全部
Java源程序一般用java作为扩展名,是一个文本文件,用Java语言写成,可以用任何文本编辑器创建与编辑;编译源程序Java编译器,“javac”,读取你的Java源程序并翻译成Java虚拟机能够明白的指令集合,且以字节码的形式保存在文件中。通常,字节码文件以class作为扩展名;运行class(字节码)文件Java解释器读取字节码,取出指令并且翻译成计算机能执行的代码,完成运行过程
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
第一,编译器会生成了一个默认的无参数构造函数。
第二,之所以输出ObjectInstance ,是自动调用了toString方法。
第二,之所以输出ObjectInstance ,是自动调用了toString方法。
追问
。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询