黑马程序员技术交流社区
标题:
代码写在构造方法里有什么好处?
[打印本页]
作者:
章成
时间:
2011-7-18 09:31
标题:
代码写在构造方法里有什么好处?
看到有些代码会写在构造方法里,像图形界面swing那部分的,涉及到建界面的代码都是写在构造方法里,这样写有什么好处,写在一方法里,再调用行不行?
作者:
匿名
时间:
2011-7-18 09:35
可以写在别的方法里...
构造方法主要的好处就是有些默认要执行的代码或初始化的参数在对象创立的时候就直接执行或初始化了...
我认为主要是为了方便,没有什么特别的
作者:
匿名
时间:
2011-7-18 10:10
初始化对象
作者:
匿名
时间:
2011-7-21 16:24
标题:
回复 楼主 的帖子
老实说,构造方法一般用来初始化对象的,代码都写在构造方法里,好处就是创建了对象之后不需调用方法就可以实现功能。看起来挺方便的,但是不是好习惯,有坏处。
1、比如一个对象要实现某个功能,加入代码全部写在构造方法里,那么我们就不知道这个对象的功能,做不到见名知意,逻辑上不通。
2、在多线程环境中,当在构造方法中创建一个线程时,显式(直接将它传递给构造方法)、隐式(Thread或Runnable是所属对象的内部类),this(就是当前对象)几乎总是被线程共享,于是线程在当前对象完成构造前就能看见(也就是访问,当然有可能修改)它。所以最好不要立即启动它,而是在构造方法外start()方法来启动线程。
3、而且如果代码有要捕获的异常,那怎么办?此时实例对象都没有完全创建成功(就是没有正确初始化),谁来捕获异常?
4、构造方法是不能继承的,那么如何让代码重用?Java的多态性怎么体现呢?
这是我能想到的坏处了,请多多指教。
但是在构造方法中调用其他方法可能会出现问题。
在构造方法中调用覆盖的(既不是final也不是static)的方法出现问题,如果子类覆盖了这个方法,那么子类实例化时会先调用父类的构造方法,而它又调用了被覆盖的方法,由于多态性,实际调用的是子类对象的同名方法,但是此时子类实例对象还没创建!所以矛盾了。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2