构造方法的一些疑问

来源:3-1 课程总结

WhiteSJ

2017-10-19 21:44:28

我觉得,用构造方法去传值然后再用this去指定赋值去相关变量,不是比直接对象名·属性麻烦多啦😄求解答

写回答

2回答

好帮手慕珊

2017-10-20

你是指用this.name这种形式赋值吗?用this去引用成员变量,和使用对象去引用的意义是不一样的。this表示当前对象的引用,而如果创建一个新的对象,那么就相当于在这个类中有两个对象了,一个是当前对象,一个是新创建的。而且除非需要,我们一般也不在类中创建一个自己的对象作为成员变量的。祝学习愉快!

0
hhiteSJ
h 非常感谢!
h017-10-20
共1条回复

慕神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来做,是程序员来制定的。

0
hhiteSJ
h 非常感谢,还写了这么多,感动!
h017-10-20
共2条回复

0 学习 · 14452 问题

查看课程