黑马程序员技术交流社区

标题: 突发疑问,把对象通过构造器传入和创建对象有什么区别啊 [打印本页]

作者: 1018chenhaiyang    时间: 2015-11-30 22:19
标题: 突发疑问,把对象通过构造器传入和创建对象有什么区别啊
是这样的,现在想在Demo类中使用一个对象,有两种方式:
class  Demo{
         public static viod main(String[] args){
       Student  stu  = new Student();
        }
}            //这个是方式一

class Demo{
   private Student stu ;
   public Demo(Student stu){
      this.stu = stu;
   }
   public static void main(String[] args){
         stu.name  = ......
         stu.show(),
     }
}  //这是方式2

这两种方式有什么区别吗,实现的效果又有什么不同,在线程那块儿用方式2 的多,
作者: 队长别开枪是我    时间: 2015-11-30 22:26
顶一下~
作者: jiangshicun007    时间: 2015-12-1 11:00
用自己的就在类中创建,如果别人有创建好的,你需要用,那么就通过构造器把地址值引用传给你!
作者: 黑夜中那颗星    时间: 2015-12-1 22:06
这就涉及了多态了,你用传值方式,可以增加扩展性,灵活性。
private Student stu ;
   public Demo(Student stu){  
比如这里可以传入Student类对象,也能传Student子类对象,这样就增强了扩展性了,然后也增强了灵活性,如果你自己写死在里面Student stu = new Student();这样只能用这个Student对象,如果是传值方式可以是任意Student对象
      this.stu = stu;
}
作者: anuo    时间: 2015-12-2 09:19
第二种方法比较好点吧,我也是刚刚学,不太懂。不直接调用,用定义好的方法比较好点
作者: 冰霜之卅    时间: 2015-12-2 13:07
这两种方式有什么区别吗,
当然有区别   
前者是声明的时候 直接传参数  
用到的地方 有单例 工厂  还有。。

后者是自己NEW 对象。


实现的效果又有什么不同
效果 看起来是一样的。。 深挖要大神来解释。
作者: Little_jie    时间: 2015-12-2 21:50
工厂模式吧,记不清了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2