哪位大哥能具体帮我解释一下: User user = new UsreImpl();<或者里面还有待参数的情况>
这个说的越清楚越好,最好举个例子什么地方用的比较多?哪些地方必须要这么用?这样用有什么好处?

解决方案 »

  1.   

    就是NEW一个对象 有没有参数看构造
      

  2.   

    User 是一个借口 Userimpl是他的实现类,体现了java的多态性吧!我一直这样理解的
      

  3.   

    多太,自己看看,你google就直接收索多态的好处,如果不知道多态,去看看java基础吧
      

  4.   

    这就是所谓的多态。UserImpl是User的子类,现在使用子类的构造函数创建了一个父类用户实例,这样的话子类中对父类的进行覆盖的方法就出现在了新创建的用户实例中。比如这样一个例子。父类Shape,方法draw(),子类1为Circle(圆),draw()方法为画一个圆;子类2为Tangle(三角形),draw方法为画一个三角形。现在如果用圆的构造函数建立一个Shape的用户实例,那么Shape再次调用draw()函数的时候就是画一个圆了;对子类Tangle同样适用。
      

  5.   

    编译和运行时的类型不一样而造成多态
    引用变量在编译阶段只能调用其编译时类型所具有的方法,但运行时则执行它运行时类型所具有的方法。通过引用变量来访问其包含的实例Field时,系统总是试图访问编译时类型所定义的Field,而不是运行时的Field。这种把子类对象赋给父类引用,也叫做向上转型,向上转型总是可以成功的。
    这只是一种表现,你自己能够明白就好了,没必要纠结。
      

  6.   

    多态呀,前面User是接口或者父类,后面是UsreImpl()是实现类。
    这样的好处就是还可以用user来new其他实现类。增强程序可扩展性。
      

  7.   

    大家都知道是多态,但是你自己要明白为什么这么用,什么时候这么用。按照你上面的
    User user = new UsreImpl();  如果就这么一个实现类就没必要那么做了直接new个实现就可以了,但是如果user 的是实现类有两个以上,这么用才有价值
    User user = new UsreImpl1();
    UsreImpl2();
    UsreImpl3();
    这样的直接好处在于你直接换掉实现类其它代码不用改变。
    这也就是我们常说的lsp(里氏代换原则)原则的使用,任何父类可以出现的地方子类都可以代替,同时也是依赖倒转原则的提现,依赖倒转原则讲的是要依赖于抽象,不要依赖于具体实现,如果你直接new一个就依赖了具体实现,话也说回来,这些所谓ood原则都是理论,在实际编程中灵活使用,怎么提高程序扩展性,可维护性带来实际的好处才是我们追求的。
      

  8.   

    具体的设计原则看:http://www.happyalaric.com/archives/181
      

  9.   

    Java多态机制,由接口类new 出实现类。里氏替换原则,提高代码的灵活性~!一般依赖注入好像都有用吧。