>  Q&A  >  본문

java 对象调用

A是一个接口,B继承了它,C是一个抽象类,它里面有A的对象,D继承了它

我想在D类里用B里面的一个b的方法,这个b的方法A里面没有,是B自己的,而且D里面没有B的对象

C里面有一个方法是给A这个属性赋值,传进去的是一个B的对象,但是我怎么在D里面获取到这个对象呢

大家讲道理大家讲道理2717일 전328

모든 응답(2)나는 대답할 것이다

  • PHPz

    PHPz2017-04-17 11:07:43

    C类中的属性A如果是private的,必须有get方法才能访问;如果不是,直接强制类型转换为B类型就可以访问。

    회신하다
    0
  • 大家讲道理

    大家讲道理2017-04-17 11:07:43

    先通过代码简单描述一下你的问题:

    public interface A {}
    public class B implements A {
      public void b() {}
    }
    public abstract class C {
      private A a;
      public void setA(A a) {
        this.a = a;
      }
      ...
    }
    public class D extends C {
      ...
      public void d() {
        // 此处想通过this.a访问到对象B的b方法
      }
    }
    

    修改方式一:

    public abstract class C {
      protected A a;
      public void setA(A a) {
        this.a = a;
      }
      ...
    }
    public class D extends C {
      ...
      public void d() {
        // 此处通过this.a访问到传入对象B的b方法
        if(this.a instanceof B) {
          ((B) this.a).b();
        }else {
           ...
        }
      }
    }
    

    修改方式二:

    public abstract class C {
      private A a;
      public void setA(A a) {
        this.a = a;
      }
      protected A getA() {
        return a;
      }
      ...
    }
    public class D extends C {
      ...
      public void d() {
        // 此处想通过getA()访问到传入对象B的b方法
        A a = getA();
        if(a instanceof B) {
          ((B) a).b();
        }else {
           ...
        }
      }
    }
    

    회신하다
    0
  • 취소회신하다