我正在复习教科书的一个问题,我有点困惑。代码是:
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/