これは、 「Javaアクセス修飾子とオーバーライド」という質問のフォローアップです。ただし、前者は一般的にJavaメソッドを扱います。なぜJavaフィールドの柔軟性があるのですか?継承されたクラスでは、それらを尊重して可視性を狭めたり広げたりできますが、「overridden」または「hidden」メソッドではできません。
1170 次
2 に答える
3
最初からフィールドをオーバーライドすることはありません。常にフィールドを非表示にしています。フィールドは多態的ではありません...つまり、次のように書くと:
Superclass x = new Subclass();
System.out.println(x.field);
と の両方でというフィールドSuperclass
を宣言すると、コンパイラが「見る」ことができるのはそれだけなので、とにかく常にスーパークラスを使用します。Subclass
field
個人的には、とにかく変数を非公開にしようとしています...
于 2011-07-28T21:22:56.633 に答える
2
Java フィールドの柔軟性が高い理由
別のクラスのフィールドを拡張してプライベートにすることはできません。サブクラスで新しいフィールドを作成すると、スーパークラスのフィールドが非表示になります。
class Base {
protected int x;
}
class Ext extends Base {
private int x; // not the same as Base.x
}
于 2011-07-28T21:24:48.850 に答える