2 つの異なるパッケージに次の 2 つのクラスがあります。インスタンス メソッドのアクセス修飾子は保護されています。これは、同じまたは異なるパッケージ内のサブクラスがそれにアクセスできることを意味します。ただし、Eclipse では、サブクラスCat
の 17 行目に次のメッセージが表示されます。
The method testInstanceMethod() from the type Animal is not visible
スーパークラスとサブクラスの私のコードは以下のとおりです。
package inheritance;
public class Animal {
public static void testClassMethod() {
System.out.println("The class" + " method in Animal.");
}
protected void testInstanceMethod() {
System.out.println("The instance " + " method in Animal.");
}
}
package testpackage;
import inheritance.Animal;
public class Cat extends Animal{
public static void testClassMethod() {
System.out.println("The class method" + " in Cat.");
}
public void testInstanceMethod() {
System.out.println("The instance method" + " in Cat.");
}
public static void main(String[] args) {
Cat myCat = new Cat();
Animal myAnimal = myCat;
myAnimal.testClassMethod();
myAnimal.testInstanceMethod();
}
}