インスタンスとメソッドの非表示の理由と利点、特にスーパークラスメンバーを複製することで得られる利点を誰かが説明できますか? それは、クラスをさらに定義し、それを改善することを目的とする継承に直面していませんか?
2 に答える
1
私は強く反対します。要素は静的な場合にのみ非表示にできるため、サブクラスやインスタンスではなく、宣言クラスによって静的要素を呼び出すという適切な方法を使用している場合、違いはありません。
Javaチュートリアルページからの例として
public class Animal {
public static void testClassMethod() {
System.out.println("The static method in Animal");
}
public void testInstanceMethod() {
System.out.println("The instance method in Animal");
}
}
public class Cat extends Animal {
public static void testClassMethod() {
System.out.println("The static 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;
Animal.testClassMethod();
myAnimal.testInstanceMethod();
}
}
出力します
The static method in Animal
The instance method in Cat
ご覧のとおり、同じ名前で実装された別の静的メソッドを使用しても、Animal で宣言されたメソッドは、呼び出しCat.testClassMethod();
て同じ結果を期待しない限り、実際には隠されていませんでした。
静的要素は実際には継承されず、サブクラスにアクセスできるため、ここでは継承の概念を抽象化するだけの問題です。
于 2014-02-22T02:34:13.507 に答える