你设置一个接口 里面的方法传出参数为类A, 现在你需要传出一个A的子类(如B)。有办法可以实现吗?
class A{
private int a = 1;
}interface base{
public A test();
}
class B extends A{
private int b = 1;
}

解决方案 »

  1.   

    实现base接口,重写test方法,在子类的test方法中返回B类型的对象是可以的
      

  2.   

    public class Test2 {
    public static void main(String[] args) {
    base test = new impl();
    A A = test.test();
    // System.out.println(A.b);
    System.out.println(A.a);
    }


    }interface base{
    public A test();
    }class A{
    public int a = 1;
    }
    class B extends A{
    public int b = 3;
    }class impl implements base{

    public B test(){
    B b = new B();
    b.b = 10;
    b.a = 4;
    return b;
    }
    }
      

  3.   

    不明白想证明什么,不就是多态加强制转换实现吗:
    class A {
    public int a = 1;
    }class B extends A {
    public int b = 2;
    }interface base{
    public A test();
    }public class Test2 implements base{
    @Override
    public A test() {
    return new B();
    }

    public static void main(String[] args) {
    base base = new Test2();
    B b = (B)base.test();
    System.out.println(b.b);
    }
    }
      

  4.   

    就用一个多态就能解决问题了!如果B继承于A,则可以A  a = new B();的方式来创建B
      

  5.   

    现在是接口内定义了方法传出来类A,现在想要多传出参数,但是类A不能修改。只能用类B去继承类A,在B中加入其它参数。
    但是多态的话,类B新加的参数就不会有了。现在有什么办法吗
      

  6.   


    有能听懂楼主这段话描述意思的人么?我在4楼的代码如果不是这个意思,俺是真听不懂了。
    楼主的意思是,有一个类A,A有一个成员变量,能通过一个接口传出这个成员变量。现在想要扩展类A,让A能多一个成员变量,但是A不能修改,所以想用另一个类B去继承A,在B里增加成员变量,再通过接口传出去。
    反正对于这种需求,我想说的只有一句话,MDZZ。
      

  7.   

    void demo(Class<? extends B> param){}
      

  8.   

    B b = new base() { @Override
    public B test() {

    return new B();
    }

    }.test();
    这样不知道是不是楼主想要的