A是一个接口,B继承了它,C是一个抽象类,它里面有A的对象,D继承了它
我想在D类里用B里面的一个b的方法,这个b的方法A里面没有,是B自己的,而且D里面没有B的对象
C里面有一个方法是给A这个属性赋值,传进去的是一个B的对象,但是我怎么在D里面获取到这个对象呢
A是一个接口,B继承了它,C是一个抽象类,它里面有A的对象,D继承了它
我想在D类里用B里面的一个b的方法,这个b的方法A里面没有,是B自己的,而且D里面没有B的对象
C里面有一个方法是给A这个属性赋值,传进去的是一个B的对象,但是我怎么在D里面获取到这个对象呢
先通过代码简单描述一下你的问题:
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 {
...
}
}
}
8 回答6.6k 阅读
4 回答711 阅读✓ 已解决
2 回答3.4k 阅读
3 回答1.9k 阅读✓ 已解决
1 回答2.2k 阅读✓ 已解决
1 回答2.1k 阅读✓ 已解决
1 回答974 阅读✓ 已解决
C类中的属性A如果是private的,必须有get方法才能访问;如果不是,直接强制类型转换为B类型就可以访问。