【发布时间】:2019-10-06 16:39:11
【问题描述】:
我使用 Boyarskiy OCA 认证书,第 173 页。
所以,我遇到了一些问题:
我在其他包中有父 class Bird 和 protected 字段名称和子。
package bird;
public class Bird{
protected String name;
}
和孩子:
package swan;
import bird.Bird;
public class Swan extends Bird{
public void check1(){
System.out.print(name);
}
public void check2(){
Swan swan = new Swan();
System.out.print(swan.name);
}
public void check3(){
Bird bird = new Bird();
System.out.print(bird.name);
}
}
所以,
-check1编译ok
-check2 编译,但是为什么呢? check2() 是创建class 的新实例并尝试从其他包调用父字段名称(不是通过继承)。
-check3 无法编译。
【问题讨论】:
-
Jeanne Boyarsky 写了几本书。请张贴您正在使用的人的名称。
-
我认为 JLS 会提供答案。顺便说一句,只是一个挑剔但没有任何东西试图“调用父字段名称” - 它试图访问该字段。不能调用字段,只能调用方法。我之所以提到这一点,是因为您提到了认证,如果您要参加认证测试,了解正确的术语很重要。
-
@Abra Oracle 认证 OCA java 8
标签: java