WaterSource source; //问题1:当程序执行到这儿时,应该调用
//WaterSource类
//的构造函数,但结果中为什么没有
//“WaterSource()”??
这里是不会调用构造函数的,只是把source初始化为null.
WaterSource source = new WaterSource();
这样才调用初始化函数
解决方案 »
- myeclipse8.6里坑爹的javaEE5
- nor any of its super class is known to this context.
- ant的时候出错
- 关于antproject 中%1%2%3问题
- log4j:WARN No appenders could be 。。。。
- entity context
- Tomcat的安装问题,提示NO java Virtual Machine Found,
- j2ee 在 linux 下的怎莫用???:
- mybatis分页查询时ORA-00907: 缺失右括号
- 经纬度经纬地图问题,有经验的指点下。
- 在windows中如何向win的可执行文件一样启动java文件?
- Tuxedo
2, 原因同上,WaterSource()并未执行,s 没有初始化,所以为null。
3, 在System.out.println()方法中,会自动调用对象的toString方法。
4,有的。只要是类,都是从Object这个类继承出来的,都会继承Object的toString方法。
5,WaterSource类中定义的toString 方法会把从Object类中继承来的toString方法覆盖掉。
可以改名字,想定义成什么名字都行,只要符合java命名规约。
不调用new ,jvm不会给你的class生成实例,也不会分配空间,更不要说初始化了,所以你的构造函数不会被调用。
在java里面所有的类都是从Object继承下来的,你如果看过Object这个类的原码就会非常清楚。Object里面已经定义了一个toString方法。
再有,如果你看过String 这个类的原码就会彻底搞清楚toString的涵义和用法。。因为String类已经实装了toString这个方法。
还有,当你执行比如System.out.println(Object)的时候,就会自动调用Object的toString方法,所以,当你的object不初始化,就是null,如果初始化了但没有自己实装toString方法,就会默认调用父类的toString,如果父类也没有实装,就会一直调用到Object的toString方法,打出来的是对象实例的hash code。
//WaterSource类
//的构造函数,但结果中为什么没有
//“WaterSource()”??
这个理解不对,因为这只是定义的变量,并没有创建对象,也就是没有new对象
2)也是因为没有new原因,所以没有执行s = new String("Constructed");
3)如System.out.println(obj)这个时候会自动调用toString方法
4)这个toString是父类(Object)的方法,不写的话,调用父类的toString(),自己写就重载了这个方法。
5)改当然可以改名,只是没有重载父类的方法了