java对象调用方法,java 对象调用

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

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 {

...

}

}

}

先通过代码简单描述一下你的问题: 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 { ... } } }
经验分享 程序员 微信小程序 职场和发展