0

Java 変数の継承とコンストラクターのコード フローを説明する情報グラフィックはありますか?

継承とクラス変数がどのように機能するか、パブリック、静的なプライベートデフォルト、またはその他の方法を視覚化するのに問題があります。

4

5 に答える 5

0

アクセス修飾子 (public、protected、package) は、継承において小さな役割しか果たしません。サブクラスの関数または変数を、スーパークラスよりアクセスしにくくすることはできません (たとえば、Animal には public void doStuff() があり、Cat extends Animal には private void doStuff() があります)。

静的メソッドと非静的メソッドは、継承にも実際には影響しません。静的変数は、関心のあるクラスに関連することを除いて、同じように機能します

public class Magic{
    public static int pants;
}

public class MagicPants extends Magic{
    public void go(){
        System.out.println(pants); 
        System.out.println(MagicPants.pants);
        System.out.println(Magic.pants);
    }

    public static void main(String argv[]){
        Magic.pants = 2;
        MagicPants.pants = 1;
        new MagicPants().go();
    }
}

すべての印刷 1

コンストラクターのコード フローは簡単です。super() 呼び出しに従います。

于 2012-08-16T07:04:22.787 に答える
0

なのでグラフィックはわかりません。

静的とは、変数が同じクラスを持つすべてのオブジェクトで同じであることを意味します。

お気に入り

public Class TryVariable{
    public static int variable = 2

    public static void main(String[] args){
        a = new TryVariable()
        b = new TryVariable()
        system.out.println(a.variable)
        system.out.println(b.variable)
        // both equals 2

        a.variable= 3
        system.out.println(a.variable)
        system.out.println(b.variable)
        // both equals 3, because variable is static. 
}  

パブリック変数は、前の例で行った方法で直接彼女を直接変更できることを意味します: object.variableName = value。これは危険です。すべての人が使用することはお勧めできません。

プライベート変数を直接変更することはできません。この作業を行うには、いくつかのゲッターとセッターを使用する必要があります。それはコーディングする良い方法です。

デフォルトでは、私はすべてのパラメーターについてよくわからないので、説明しません。でも99.9%はプライベート利用です。

保護されているということは、変数がパッケージとサブクラスに開かれていることを意味します (最初はプライベートの方が使いやすく安全です)

他のパラメーターを final にすることができます。このパラメーターを使用すると、変数を変更できなくなります。みたいな定数です。また、静的な最終パラメーターはクラス定数です。

さらに情報が必要な場合は、以前の回答で、公式の情報源がどこにあるかを説明してください。

于 2012-08-16T07:04:23.480 に答える
0

これは非常に簡単な例です: http://vskl.blogspot.cz/2009/05/polymorphism-in-java.html

CircleまたはSquareオブジェクトを作成するたびに、Shapeオブジェクトも作成されます

変数について:
-privateサブクラスを含む他のクラスからフィールドにアクセスすることはできません。
-protectedフィールドは、任意のサブクラスからアクセスできます。リンクから写真を撮ると、抽象クラス Shape の変数 x と y で、Circle または Square のすべてのインスタンスにこれらのフィールドがあります。
-defaultフィールドは、同じパッケージ内の任意のサブクラスおよび任意のクラスからアクセスできます (同じパッケージ内のみ、サブパッケージ内のクラスはアクセスできません)。これは通常、自動化されたテストを作成するときに役立ちます。フィールドの public getter を宣言する必要はありません。
-publicフィールドは、他のどのクラスからもアクセスできます。ただし、これらを使用するのはクリーンなコードの記述方法ではありません。getter と setter でプライベート フィールドを作成することをお勧めします。
-staticキーワードは、インスタンスではなく、クラスが所有するフィールドを指定します。これは、1 つのフィールドをクラスの複数のインスタンスで共有するようなものです。1 つのインスタンスがこのフィールドの値を変更すると、他のすべてのインスタンスは、この新しく変更された値のみを読み取ることができます

于 2012-08-16T07:08:35.567 に答える
0

Lava 言語仕様を使用して、上記のキーワードを使用してコードを記述し、テストすることをお勧めします。

  1. デフォルト:パッケージに表示されます。.
  2. private:クラスのみに表示されます
  3. public:全世界に公開
  4. protected: パッケージとすべてのサブクラスに表示されます。
于 2012-08-16T06:52:11.517 に答える
0

OracleのJava チュートリアルには、継承に関するすべてのセクションがあり、ほとんどの質問に答えることができるはずです。

于 2012-08-16T06:55:02.727 に答える