java 对象调用
大家讲道理
大家讲道理 2017-04-17 11:05:43
0
2
353

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

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

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

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

Antworte allen(2)
PHPzhong

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 {
       ...
    }
  }
}
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!