第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

java 對象調(diào)用

java 對象調(diào)用

慕田峪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條經(jīng)驗 獲得超8個贊

C類中的屬性A如果是private的,必須有g(shù)et方法才能訪問;如果不是,直接強制類型轉(zhuǎn)換為B類型就可以訪問。


查看完整回答
反對 回復(fù) 2019-04-15
?
搖曳的薔薇

TA貢獻1793條經(jīng)驗 獲得超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 {

       ...

    }

  }


查看完整回答
反對 回復(fù) 2019-04-15
  • 2 回答
  • 0 關(guān)注
  • 401 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號