我有一个母类,比如:
class A {
  private a;
  private b;
  a,b的get,set方法}class B extends A {
  private c;
  c的get,set方法
}
我new了一个A的类A classA = new A(),classA赋了值,这时我感觉A不够用想用它的子类,这里想把calssA的值也传过去,这时候怎么做呢?不要说一个个传,也不要用得到方去循环自动赋值的方法.

解决方案 »

  1.   

    那你为什么不直接NEW  B 呢
      

  2.   

    我new了一个B,那我要的classA的值怎么给B呢?
      

  3.   

    楼主想问题想晕了吧,
    如果A有好多个子类呢,比如除了B,还有E,F,G,H等呢? 你如何去判断
    你想要B的方法,直接new B不就可以了嘛
      

  4.   

    "我new了一个B,那我要的classA的值怎么给B呢?"明白楼主的意思啦,要实现楼主的思路,继承好象没法达到吧,你何不把A作为B的一个成员变量呢,那样直接不就能访问A的所有值了吗?
      

  5.   

    sureyor的误解我的意思了,B是一定要new的,可是现在我想把A里面的值也赋到B里面的相同属性里面去,我想问的是,怎么赋过去,我知道有三个方法:一个是最笨的方法:
    B classB = new classB();
    B.setA(classA.getA());
    ....可是这里如果属性很多呢??二,是用Mathed类去循环做
    这种我不是很喜欢
    三,就是克隆
    其实我是想让你们加答我克隆的做法,只是我没点破
    回为我记得以前克隆做起来是很方便的,只要一句话就行了.
      

  6.   

    "我new了一个B,那我要的classA的值怎么给B呢?"明白楼主的意思啦,要实现楼主的思路,继承好象没法达到吧,你何不把A作为B的一个成员变量呢,那样直接不就能访问A的所有值了吗?to sureyor:我也想这样,可是由于某些因为,我是不能这样做的, 所以我只能这样
      

  7.   

    那你把set get方法设成public 不就完了.
      

  8.   

    to mrlaotie:
     请先看完问题
      

  9.   

    to mrlaotie:
      A classA = new classA();
      B classB = new classB();
      比如说classA的每个属性a,b可能还有更多,里面有值了
      由于媒些原因,我要把classA传值传到别一个对像里面去了,而这时候我又要传calssB里面的属性c值,我不想把classA,classB两个对象一起传过去,因为B是A的子类所以classB中的属性包含了classA的所有属性,所以我想把classA的值传给classB,这样只要把classB这一个对象传过去就行了,这样说懂不?
      

  10.   

    按你这么说,classA中的值是继承不来的,只有手动取完给B了!
      

  11.   

    想在想说的就不是手动的,手动的是最笨的,当然也是最直接的,还有一个就是通过方法类的方法去做,这个智能一点,一个循环就算N个属性也没关系,接着就是clone的方法,我现在不知道clone可不可能实现我想要的
      

  12.   

    其实,最简单的办法就是最开始就不用A直接就用B什么方法都省了,要不你说你继承A的目的是什么呢?
      

  13.   

    to mriaotie:
    呵呵,发现你很小孩子,总说一些一厢情愿的话,先不说这里不能用B去代替A,就算可以,我这里想讨论的是一个方法,多知道一种方法总不会错吧,以后哪天就有用了。干嘛一定要动那歪脑筋
      

  14.   

    我晕,还在争呢
    我觉得楼主的想法是不可能实现的:
    按照正常的思路,首先你要获取B的基类,而且还是必须获取它的引用,然后再把A的实例赋给它,无论是通过clone或者其他方式,但是问题在于,你如何能获取B的基类的引用?
      

  15.   

    clone不能实现吗?有哪个人对clone比较熟,类的反射我知道,只是我想多知道一个方法,呵呵
      

  16.   

    clone只是能获取一个对象的副本,与这个问题的根本难点不相关
      

  17.   

    to sureyor:
    这么说我就死心了,我在网上得到的结论也是这样,可是不敢断论,哈哈
      

  18.   

    因为它的名字叫做 parent class。parent:父(母),所以一般就称父类了,呵呵。
      

  19.   

    在c++里至少可以给A重载一个赋值(=)方法或添加一个类似功能的函数, 把自己的值赋给另外一个A(可以是由派生类转换过而来的), java类是不是也可以重载一个赋值(=)方法? 
    如果不能修改A的话, 这种方式就不行了