Java扩展示例

Mar*_*mer 8 java extends superclass

我有一个java初学者问题:Parent.print()在控制台中打印"hallo",但Child.print()打印"hallo".我认为它必须打印"孩子".我怎么解决这个问题?

public class Parent {

    private String output = "hallo";

    public void print() {
        System.out.println(output);
    }

}

public class Child extends Parent {

   private String output = "child";

}
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 9

目前你有两个独立的变量,而且代码Parent只知道Parent.output.您需要将值设置Parent.output为"child".例如:

public class Parent {

  private String output = "hallo";

  protected void setOutput(String output) {
    this.output = output;
  }

  public void print() {
    System.out.println(output );
  }
}

public class Child extends Parent {
  public Child() {
    setOutput("child");
  }
}
Run Code Online (Sandbox Code Playgroud)

另一种方法是为Parent类提供一个获取所需输出的构造函数:

public class Parent {
  private String output;

  public Parent(String output) {
    this.output = output;
  }

  public Parent() {
    this("hallo");
  }

  public void print() {
    System.out.println(output );
  }
}

public class Child extends Parent {
  public Child() {
    super("child");
  }
}
Run Code Online (Sandbox Code Playgroud)

这真的取决于你想做什么.