java - 在 java 中使用子类时遇到问题

标签 java class subclass

我正在复习教科书的一个问题,我有点困惑。代码是:

public class BClass
{
  private int x;

  public void set(int a)
  {
    x=a;
  }

  public void print()
  {
    System.out.print(x);
  }
}

public class DClass extends BClass
  {
    private int y;


    public void set(int a, int b)
    {
      //Postcondition: x = a; y = b;
    }

问题是:

一个。编写覆盖它的 DClass 的打印方法的定义。

编写类DClass的方法集的定义。

对于 a,我说将以下内容放入子类中会成功覆盖是否正确?

public void print()
{
  System.out.print(x + " and " + y);
}

我也遇到了 b 的问题。因为给定了后置条件,所以很明显我应该将子类中的实例变量 y 设置为等于 b。我面临的问题是如何设置 x 等于 a。因为实例变量x属于父类,是不是就不能直接访问了呢?或者我可以这样做:

public void set(int a, int b)
{
  x = a;
  y = b;
}

非常感谢您的帮助,谢谢!

最佳答案

以下是正确的。 A不正确。我只是想说这就是覆盖的工作原理。我没有看方法的有效性。

应该是

public void print() {
   super.print();
   System.out.print(" and " + y);
}

对于 B 你需要调用 super 方法 so

public void set(int a, int b) {
   super.set(a);
   y = b;
}

关于java - 在 java 中使用子类时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22004125/

相关文章:

java - 在 Web 服务中包装存储过程的最简单方法是什么?

c++ - 使用另一个类的结构

java - 为具有多种数据类型的 Java 对象建模的最佳方法

java - 有一个扩展抽象类的空子类可以吗?

C++继承: Base attributes over various derived objects

java - 如何在传播结果或错误时调用 CompletableFuture 回调?

java - 桌面和 URI 生成角色工件

java - 什么是 Runtime.getRuntime().totalMemory() 和 freeMemory()?

c# - 使用数组语法初始化我的类

python - 传递不同的输入参数时创建默认类对象