修改从扩展 class 调用的方法

Modifiy method called from extended class

我有三个 class,我需要修改第一个 class 到扩展的第二个 :

我的第一个 class 答:

public class A{

private String name;

public void setName(String name) {
        this.name= name;
    }

我的第二个class B

public abstract class B  {
 public void init() {

   A a = new A();
  a.setHost("foo"); 
 }
}

我的第三个classC

public class C extends B {
// I want to use the method setName() of the a declared in class B
  b.init.a.setName("bar");//compile error, I tried several syntax I don't know how to do it

}

预期输出,在我的第三个 class 中:

a.Getname = "bar"

你可以在 B 的初始化方法中 return a,如下所示。

public A init() {

  A a = new A();
  a.setHost("foo"); 
  return a;
 }

然后你可以像下面这样在C中设置值

public class C extends B {
   public setNameinA() {
      B b = new B();
      b.init().setName("bar");
   }
}

您的代码有多个问题:

1) 从未声明变量 b。
2) 变量a对方法init是私有的,所以你不能在init方法之外访问它。

所以解决方案应该是这样的:

Class乙:

public abstract class B  {

 protected static A a = new A(); // Protected to make it visible to child class
 public void init() {

  a.setHost("foo"); 
 }
}

Class C:

public class C extends B {
  public static void main(String[] args) {
    a.setName("bar");
    System.out.println(a.getName());  //Output = bar
  }
}