java 对象调用

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

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

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


慕田峪4524236
浏览 394回答 2
2回答

猛跑小猪

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

摇曳的蔷薇

先通过代码简单描述一下你的问题: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 {       ...    }  }
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java