构造方法的一些疑问
来源:3-1 课程总结
WhiteSJ
2017-10-19 21:44:28
我觉得,用构造方法去传值然后再用this去指定赋值去相关变量,不是比直接对象名·属性麻烦多啦😄求解答
2回答
你是指用this.name这种形式赋值吗?用this去引用成员变量,和使用对象去引用的意义是不一样的。this表示当前对象的引用,而如果创建一个新的对象,那么就相当于在这个类中有两个对象了,一个是当前对象,一个是新创建的。而且除非需要,我们一般也不在类中创建一个自己的对象作为成员变量的。祝学习愉快!
慕神0611619
2017-10-20
我也是个小白,我是这样认为的,不知道答案和对问题的理解对不对,欢迎指正。
假如你有一个这样的类:
用this:
public class Something {
int someFeature;
public Something (int someFeature) {
this.someFeature = someFeature;
}
}
不用this:
public class Something {
int someFeature;
Something someObject = new Something(); //多了这一句
public Something (int someFeature) {
someObject.someFeature = someFeature;
}
}
实际上是多了一句实例化的过程,this就是这个someObject,只不过是给你简化了,用this就可以在类内的方法来调用这个对象而不需要另外进行实例化。
另外用利用construcotr传值,然后在constructor里用this调用setter方法,其目的就是避免在constructor中忽略了某些限制条件。这样直接在setter里设置好了,在constructor调用就会简便许多。不然的话相同的判断条件、限制条件你都要在setter和constructor里写两遍。
然后把属性写成private然后用constructor或者setter设置的方法进行设置是封装的办法。直接用对象名来调取属性这种办法非常不安全,别人可以任意进行操作而没有限制。但是通过method来设置和更改的话只能按照程序内部的method来做,是程序员来制定的。
相似问题