JAvaのマルチステート
2175 ワード
マルチステートとは、たとえばanimalというオブジェクトを使用する必要があるメソッド、newが誰なのか、呼び出しが誰なのかなどのメソッドです.
マルチステートには、次の3つの条件があります.
1、継承する
2、書き直す
3、親参照が子オブジェクトを指す
多態とは、リロードとリライトです.リロードは一つのクラスで発生します.リライトはサブクラスで発生します.つまり、サブクラスが親と同じ名前を書き換える方法です.言語を勉強したばかりのものは、そんなにはっきりする必要はありません.使い方を知っていればいいだけです.本当に理解したい問題があります.短時間では不可能です.例えば、インタフェースなどです.何年かの仕事の経験がなければ、インタフェースとは何かを本当に理解することはできません.4、5年も仕事をしていない人もいます.インタフェースとは何かを理解するのにあまり時間をかけないでください.分かりにくい問題をしないでください.リロードされた特性は、方法名が同じです.戻りタイプ、入り方のパラメータが違います(個数とタイプを含む).書き直した特性は、方法名が同じで、戻りタイプ、パラメータが同じです.サブクラスで発生する必要があります.
1.Java言語では、あるタイプの参照変数がサブクラスのインスタンスを参照し、この参照変数をタイプ変換できます.
2.参照変数をサブクラスタイプに変換する場合をダウンシフトと呼び、参照変数を親タイプに変換する場合をアップシフトと呼ぶ.
3.参照変数のタイプ変換を行う場合、様々な制限があります.また、Java仮想機会は、参照変数によって参照されるインスタンスの静的プロパティ、静的メソッド、インスタンスプロパティ、インスタンスメソッド、および親クラスから継承されるメソッドおよびプロパティにアクセスする際に、異なるバインドメカニズムを採用します.4.メンバー変数、静的メソッドは参照変数によって宣言されたタイプの静的バインドに従う.インスタンスメソッドは、参照変数が参照するインスタンスに従って動的にバインドされます.たとえば、次のコードについて説明します.
マルチステートには、次の3つの条件があります.
1、継承する
2、書き直す
3、親参照が子オブジェクトを指す
多態とは、リロードとリライトです.リロードは一つのクラスで発生します.リライトはサブクラスで発生します.つまり、サブクラスが親と同じ名前を書き換える方法です.言語を勉強したばかりのものは、そんなにはっきりする必要はありません.使い方を知っていればいいだけです.本当に理解したい問題があります.短時間では不可能です.例えば、インタフェースなどです.何年かの仕事の経験がなければ、インタフェースとは何かを本当に理解することはできません.4、5年も仕事をしていない人もいます.インタフェースとは何かを理解するのにあまり時間をかけないでください.分かりにくい問題をしないでください.リロードされた特性は、方法名が同じです.戻りタイプ、入り方のパラメータが違います(個数とタイプを含む).書き直した特性は、方法名が同じで、戻りタイプ、パラメータが同じです.サブクラスで発生する必要があります.
1.Java言語では、あるタイプの参照変数がサブクラスのインスタンスを参照し、この参照変数をタイプ変換できます.
Animal animal=new Dog(); // animal Animal Dog
Dog dog=(Dog)animal; // , Animal Dog
Creature creature=animal; // , Animal Creature
animal=new Cat(); // animal Animal Cat
:Creature 。
2.参照変数をサブクラスタイプに変換する場合をダウンシフトと呼び、参照変数を親タイプに変換する場合をアップシフトと呼ぶ.
3.参照変数のタイプ変換を行う場合、様々な制限があります.また、Java仮想機会は、参照変数によって参照されるインスタンスの静的プロパティ、静的メソッド、インスタンスプロパティ、インスタンスメソッド、および親クラスから継承されるメソッドおよびプロパティにアクセスする際に、異なるバインドメカニズムを採用します.4.メンバー変数、静的メソッドは参照変数によって宣言されたタイプの静的バインドに従う.インスタンスメソッドは、参照変数が参照するインスタンスに従って動的にバインドされます.たとえば、次のコードについて説明します.
Fathers f=new Sons();
System.out.println(“f.var=”+f.var);
System.out.println(“f.staticVar=”+f.staticVar);
f.method();
f.staticMethod();
:
f.var=FatherVar
f.staticVar=StaticFaterVar
Son method
Static Father method
class Fathers{
String var="FatherVar";
static String staticVar="StaticFatherVar";
void method(){System.out.println("Father method");}
static void staticMethod(){System.out.println("Static Father method");}
}
class Sons extends Fathers{
String var="SonVar";
static String staticVar="StaticSonVar";
void method(){System.out.println("Son method");}
static void staticMethod(){System.out.println("Static Son method");}
String sonVar=null;
void sonMethod(){}
}