Java 変数の継承とコンストラクターのコード フローを説明する情報グラフィックはありますか?
継承とクラス変数がどのように機能するか、パブリック、静的なプライベートデフォルト、またはその他の方法を視覚化するのに問題があります。
Java 変数の継承とコンストラクターのコード フローを説明する情報グラフィックはありますか?
継承とクラス変数がどのように機能するか、パブリック、静的なプライベートデフォルト、またはその他の方法を視覚化するのに問題があります。
アクセス修飾子 (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() 呼び出しに従います。
なのでグラフィックはわかりません。
静的とは、変数が同じクラスを持つすべてのオブジェクトで同じであることを意味します。
お気に入り
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 にすることができます。このパラメーターを使用すると、変数を変更できなくなります。みたいな定数です。また、静的な最終パラメーターはクラス定数です。
さらに情報が必要な場合は、以前の回答で、公式の情報源がどこにあるかを説明してください。
これは非常に簡単な例です: 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 つのインスタンスがこのフィールドの値を変更すると、他のすべてのインスタンスは、この新しく変更された値のみを読み取ることができます
Lava 言語仕様を使用して、上記のキーワードを使用してコードを記述し、テストすることをお勧めします。
OracleのJava チュートリアルには、継承に関するすべてのセクションがあり、ほとんどの質問に答えることができるはずです。