cuốn sách gpt4 ai đã làm

java - 阴影/变量范围

In lại Tác giả: Walker 123 更新时间:2023-11-29 03:00:48 29 4
mua khóa gpt4 Nike

我以为我理解阴影的概念。但是这段代码让我想知道:

public class Counter {
int count = 0;

public void inc() {
count++;
}

public int getCount() {
số lần trả lại;
}

class StepCounter extends Counter {
int count = 0;
int step = 1;

public StepCounter(int step) {
this.step = step;
}

public void inc() {
count += step;
}

StepCounter sc = new StepCounter(2);
sc.inc();
sc.inc();
System.out.println(sc.getCount());
System.out.println(sc.count);

所以基本上 sc 的静态类型是 StepCounter。它的计数器增加了两次,所以在前两个命令之后它是 4。我的 count 变量不是私有(private)的,它是包私有(private)的(因为我没有声明它的任何可见性)。因此,如果我在 sc 上调用 .getCount() 方法,它首先会在 StepCounter 中查找它。没有,所以它去柜台。它在这里找到了 getCount() 方法。该方法返回计数。如果 count 是静态的或私有(private)的,我会理解为什么它返回 0。但是为什么在这种情况下它返回 0?即使我在 StepCounter 中公开变量计数,结果仍为 0。

câu trả lời hay nhất

getCount() 可以 只能访问在父类中定义的字段quầy tính tiền。此类在父类的编译 时解析。子级中没有方法 getCounter() của副本.

在子类中,可以使用

Counter.this.count

访问父计数器。但是为了避免意外,您永远不应该以这种模棱两可的方式命名字段。

关于java - 阴影/变量范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35114527/

29 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress