2 回答

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 {
...
}
}
添加回答
舉報