为了账号安全,请及时绑定邮箱和手机立即绑定

java 对象调用

java 对象调用

慕田峪4524236 2019-03-19 17:10:58
A是一个接口,B继承了它,C是一个抽象类,它里面有A的对象,D继承了它我想在D类里用B里面的一个b的方法,这个b的方法A里面没有,是B自己的,而且D里面没有B的对象C里面有一个方法是给A这个属性赋值,传进去的是一个B的对象,但是我怎么在D里面获取到这个对象呢
查看完整描述

2 回答

?
猛跑小猪

TA贡献1858条经验 获得超8个赞

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


查看完整回答
反对 回复 2019-04-15
?
摇曳的蔷薇

TA贡献1793条经验 获得超6个赞

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


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 {

       ...

    }

  }


查看完整回答
反对 回复 2019-04-15
  • 2 回答
  • 0 关注
  • 393 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号