我的游戏已经完成了,现在还想改进一下。我给几个差不多的类设立了一个基类,用于从中继承。程序运行时所有这些类都存放在一个该基类的list中。但是如果我从list中获取一个基类的实例后我就无法放入一个该基类的子类的实例中(和c++不同)。可是如果我用基类去存储这个实例就无发调用基类没有声明的方法。难道非要把子类需要用的方法都在基类中声明一遍吗?

解决方案 »

  1.   

    感觉你的设计有问题。比较笨的处理方法,根据从list中取出来的对象的实际类型,强制转换为实际的类型,再调用相应方法。
    可以根据obj.getClass().getName()判断是不是你需要的类名,如果是,强制转换,调用相应方法。最好还是重新考虑设计。
      

  2.   

    帮楼主顶,看下面的朋友有没有好的解决方法
    关注ing!
      

  3.   

    java中的反射可以动态得到对象中的方法
    如果基类的子类不多的话,你可以这样:objectx=(Father)list.get(i);
    if(objectx instanceof Son1){
    Son1 a=(Son1)objectx;
    a.method1();
    }else if(objectx instanceof Son2){
    Son2 b=(Son2)objectx;
    b.method2();
    }可能有语法问题,但这样应该可以实现
      

  4.   

    这个...java 不熟,但也应该有虚方法吧强制转换是可以的
      

  5.   


    这位大哥说的好像很好,关注ing
      

  6.   

    看看java编程思想里面有详细介绍
      

  7.   

    去保存一个对象的list,还不如用文件来管理一个全类名的列表,
    在通过Class.forname(classpath).newInstance()来初始化想要的对象,这样灵活很多.