これ
クラスの現在のオブジェクトを表すために常に何かが必要です。 C ++のこのポインターのように、Javaのこのキーワードは現在のオブジェクトへの参照を表します。
3つの主な機能があります。
1。コンストラクター内の他のコンストラクターを呼び出します。
たとえば、3つのコンストラクターを備えた学生クラスがあります。特定のコンストラクターの別のコンストラクターを呼び出す場合、これは必要であり、Student()を直接使用することはできません。
2。現在のオブジェクトへの参照を返します。
3。メンバー変数名とパラメーター名を区別します。
次の例を参照してください。
パブリッククラスの学生{プライベート文字列名;プライベートインクエイジ;プライベートストリングカレッジ; Public Student(){age = 20; } public Student(string name){this(); //は学生に電話することはできません。この()メソッドのみを使用します。 this.name = name; System.out.println( "この学生名は"+name); } public Student(string name、string college){this(name); // c ++他のコンストラクターを直接呼び出すことができます。college= college; System.out.println( "この学生名は"+name+"college is"+college); } public Student upgrade(){age ++;これを返します。 } public void print(){system.out.println( "name is:"+name+"age is:"+age+"college is:"+college); } public static void main(string [] args){desute sustent1 = new Student( "linc"); Student Student2 = New Student( "LINC"、 "Shenyang College"); sustent2.upgrade()。print(); }}オブジェクトの広大な海で迷子になったら、これを使用して自分自身を見つけることを忘れないでください。
素晴らしい
スーパーはこの父です。顔のオブジェクトの観点から見ると、これらの2つの概念は理解しやすいです。
サブクラスは親クラスから継承されます。親クラスの保護されたプロパティと上記のプロパティと方法は、サブクラスで生まれて生まれます。それで、なぜあなたはまだキーワードスーパーが必要なのですか?
まず、親クラスの構築を見てください。サブクラスを構築するときは、まず、親クラスのデフォルトコンストラクターを呼び出す必要があります。これは、C ++の構造特性と一致するものです。親クラスに複数のコンストラクターがある場合、どちらを呼び出すかを指定する必要があります。これには、super(arg1、arg2 ...)が必要です。
サブクラスのコンストラクターに基本クラスのコンストラクターを呼び出す場合、スーパーは最初に記述する必要があり、そうでなければエラーが報告されることに注意してください。
次に、サブクラスが親クラスを上書きするいくつかの方法で、親クラスのこの方法を呼び出します。誰もが知っているように、サブクラスで親クラスを上書きする方法は、オブジェクト指向の方向向きの多型を指向する方法であり、他のさまざまな理由で、この方法では、この方法を区別するためにこの方法を呼び出す必要があります。現時点では、それを完了するためにスーパーを使用する必要があります。
パブリッククラスのクラスリーダーは、学生を拡張します{private string duty; public classleader(){duty = "class monitor"; } public classleader(string duty、string name、string college){super(name、college); this.duty = duty; } public void print(){super.print(); System.out.println( "Duty is" + Duty); } public static void main(string [] args){classleader reader = new classleader( "life"、 "linc"、 "shenyang"); leader.print(); }}2つのクラスファイルを同じディレクトリに配置し、コンパイルして実行します。
d:/workspace/java/project261/super> java -d。 *Java D:/workspace/java/project261/super> javaクラスリーダー
実行結果:
この学生名はlincです
他の言語でどのように処理されるかをご覧ください。
C#は、Superと同様の関数を完了するためのベースキーワードを提供し、C ++はベースクラスの名前で直接それを呼び出します。