これは、これは参照型であり、これは、Javaのキーワードであり、ヒープ(ヒープ)参照型であり、各オブジェクトは、それ自体にこの点をジャワを有します。これは、現在のオブジェクト参照を表し、
彼の役割は、以下のとおりです。
1.メンバ変数を区別する。
2.ローカル変数の区別
3.コールメンバ変数またはローカル変数
4.呼び出し方法のメンバーとコンストラクタ
注意:
そうでないかもしれない静的なキーワードの静的メソッドでは内部標準ライン
それぞれの時間挙動は、確かにこの動作が発生する対象が存在します。で定義されたすべてのメソッド内のプログラミング言語では、これがキーを持っていますが、これにキーが存在し、決定によって定義されますが、決定の実施によってされていません。これは、この判断の鍵となります。
1、チア概要
例えば、それらのすべてが世界で行われ、それは神によって定義され、この方法を食べます。食事は、体がこのアクションを実行するために誰かを食べること、である食べるために、この人、である場合に発生します。時々、私たちは、私が食べている人を知りたいものを行っ振る舞い(メソッド)、明確に、正確に、この動作があることを知ることができるが必要です。
機能eatSomthing(){} this.eat
で定義されたすべてのメソッド内のプログラミング言語では、これがキーを持っていますが、これにキーが存在し、決定によって定義されますが、決定の実施によってされていません。これは、この判断の鍵となります。
2、この原則
例えば:この人はジョー・スミスで、その後、体は「ジョー・スミス」で食べます
ジョー・スミス)は、(.eat; //これは、このオブジェクトジョー・スミスで、この夕食を。
対象としているの前に(。)と判断され、その後、この本は誰にあります。しかし、いくつかの方法がこれ以上実行オブジェクトは、このキー、ノーポイントの前で直接実行されていない、それは誰ですか?
以前は省略にアラートが同等であるとして警告方法、直接実行、これはこのメソッドを直接実行することができ、それ?何をされている警告方法、あるグローバルメソッド(グローバル関数と呼ばれる方法)のように、グローバルなアプローチを行います窓の外。これは、このキーでの操作の直接的な方法は、必ずそれが窓であることがそのことを、)アラートが()のwindow.alert(と同等であると言うことです。
*注:そのオブジェクトの表現では、この方法は、の決定を実装したものです。そして、定義された関係はありません。
補足:このオブジェクトは「文脈」このメソッド活動で表しています。いわゆる「コンテキスト」は、コードが現在の活動の範囲は、そのオブジェクトで発生現在の活動(実行コード)の平均を表します。
この活動は、オブジェクトの座席で発生している食べる、座席は食事を下回っています。ボディ行くでdiv要素を検索し、ボディのための外観は、このイベントのコンテキストです。このこのことは、これは活動の範囲を実行する方法です。
操作の現在の方法が、この文脈に限定されないことは、この文脈で方法(すなわち、全体及び個々の差)。
これ:インビボ方法において、この方法キーワードのみを使用することができるが、の「メソッドを呼び出すために、そのオブジェクト」への参照です。オブジェクトが作成されると、Java仮想マシン(JVM)は名前がこのであることをオブジェクト自体のポインタへの参照が割り当てられます。したがって、このクラスは、これだけに生じてはならない非静的メソッド、スタティックメソッド、および静的コードブロックに使用することができます。
スーパー:親クラスのメンバ変数とメンバメソッドが隠されている類似したキーワードと、この効果スーパー可視、または参照メンバ変数とメンバメソッド親クラス内に隠されているために使用なります。
1。 スーパーと、このコールメンバ変数やメソッド
時には親クラスのメンバ変数やメソッドと同じ名前のサブクラスのメンバ変数やメソッドに遭遇します。あなたは親クラスのメンバ変数やメソッドを使用したい場合は、優先度の高いのサブクラスのメンバ変数やメソッド名は、メンバ変数やメソッドサブクラス非表示メンバ変数または親クラスのメソッドと同じ名前、あなたが使用する必要があるため、スーパー。
クラスカントリー{
文字列の名前。
voidvalue(){
名前=「中国」。
}
}
クラス市は{国を拡張します
文字列の名前。
ボイド値(){
名前=「合肥」。
super.value();
このメソッドが呼び出されていない場合は、//、super.nameは、親クラスのヌル値メンバ変数を返します。
System.out.println(名);
System.out.println(super.name)。
}
パブリック静的無効メイン(文字列[] args){
シティC =新都市();
c.value();
}
}
結果:合肥
中国
コード内のスーパー、super.nameとsuper.value()を使用して、親クラス値サブクラスの参照メンバ変数とメソッドを()は、名前します。あなたが)(ではないコールsuper.valueを行うと、super.nameは、このメソッドが呼び出され、親クラスのメンバ変数のデフォルト値はnullを返し、中国に割り当てられているメンバ変数名のsuper.value()メソッド、リユース親クラスのメンバーのsuper.nameを呼び出します変数の値。
また、super.nameコールは、親クラスのメンバ変数の値であることに注意してください。
クラスカントリー{
文字列名=「xianfan」。
文字列値(文字列名){
名前=「中国」。
名前を返します。
}
}
クラス市は{国を拡張します
文字列の名前。
文字列値(文字列名){
名前=「合肥」。
super.value( "失敗");
このメソッドが呼び出されていない場合は、//、super.nameは、親クラスのヌル値メンバ変数を返します。
System.out.println(名);
System.out.println(super.name)。
名前を返します。
}
publicstatic無効メイン(文字列[] args){
シティC =新都市();
c.value( "成功");
}
}
結果:合肥
xianfan
次いで、値はxianfan super.name親クラスのメンバ変数の値を返すが、この時間super.value()メソッドは無効です。
2。 スーパーと、このコンストラクタ呼び出し
クラス人{
publicstaticボイドPRT(文字列S){
System.out.println(S);
}
人物(){
PRT( "A人。");
}
人物(文字列名){
PRT(「人物の名前がある:」+名)。
}
}
パブリッククラス中国人は人を{拡張します
中国語(){
スーパー(); //は、(1)親クラスのコンストラクタを呼び出します
PRT( "中国の。"); //(4)
}
中国語(文字列名){
スーパー(名); //(2)同じパラメータを持つ親クラスのコンストラクタを呼び出します
PRT(「彼の名前は次のとおりです。」+名);
}
中国語(文字列名、int型の年齢){
この(名前); //コンストラクタはこのクラスが同じパラメータを持っている(3)を呼び出します
PRT( "彼の年齢は:" +年齢);
}
publicstatic無効メイン(文字列[] args){
中国のCNは新しい中国を()=;
CN =新しい中国語( "ケビン");
CN =新しい中国語( "ケビン"、22);
}
}
結果は次のとおりです。A人。
中国。
人物名は次のとおりです。ケビン
彼の名前は次のとおりです。ケビン
Aperson名は次のとおりです。ケビン
彼の名前は次のとおりです。ケビン
彼の年齢は次のとおりです。22
このプログラムの中には、これはもはや、スーパーではないと、以前のようにのように。「」ひとつの方法や接続部材が、それは変更の直接的な意味を持つことになりますので、後に、適切なパラメータに追いつくために。(1)及び(2)に同じ形状を有するパラメータ親クラスのコンストラクタを呼び出すために使用されるパラメータスーパーを追加した後。この添加の後にパラメータが(3)で示されるように、同じ形状のパラメータ、現在のクラスのコンストラクタと呼ばれています。もちろん、中に中国のコンストラクタのオーバーロード、およびこの超一般的な使用法のそれぞれは、まだ、このような、あなたのようにそれを置き換えることができますで(4)として、使用することができ、「this.prt」(これは、親クラスのメソッドを継承するため)または「super.prt」(それが親クラスとメソッドキルト缶のアクセスであるため)、それはまだ正しく機能することができます。しかし、これはやや余分味らしいです。
3。 あなたが参照したい場合は、サブクラスのコンストラクタスーパーは、それがなければなりませんスーパーアプローチの1行目に。
クラスベース{
ベース() {
System.out.println( "ベース")。
}
}
パブリッククラスChecketは、Baseが{延び
チェック(){
スーパー(); //親クラスのコンストラクタを呼び出すには、メソッドの最初の文を置くようにしてください
System.out.println( "Checket");
}
publicstaticボイドメイン(文字列のargv []){
チェックチェックするC =新しいです();
}
}
あなたがではなく、最初の行に、スーパーの方法で、スーパークラスのコンストラクタを呼び出したい場合は、その文は、スーパーの前に、彼らはいくつかのアクションをしたい文を満足させるために完了する必要がありますが、親クラスのコンストラクタのスーパーを呼び出すために使用されていますこの方法は、その親クラスのコンストラクタになっている、彼らはすべてのバックアップ行く前に作られた変更します。
要約:
1)スーパー(パラメータ):コンストラクタ親クラスたinvoke、工事の方法は、最初のステートメントでなければなりません。
2)この(パラメータ):最初のステートメントでなければならない構成クラスのコンストラクタの本発明の方法の別の形態を呼び出します。
3)スーパー:現在の親オブジェクトのメンバーへの直接参照、メンバー変数または直接の親クラスにアクセスするために使用する方法が隠されています。などと同じメンバーの親クラスとサブクラス使用時:超超メンバ変数名やメソッド名(引数)...
4):現在のオブジェクトの名前を表すが、これは現在のオブジェクトを示すために使用されるべきであり、プログラムにビス曖昧さを生成することが容易です。同じ名前のクラスのメンバ変数への参加の正式な方法ならば、この時点では、このメンバ変数名を使用する必要性を示します。
5)コールスーパーは()サブクラスのコンストラクタの最初の行で記述する必要がありますまたはコンパイラは渡しません。各サブクラスのコンストラクタの最初の文は暗黙のうちに、)(スーパー呼び出しをされている親クラスのコンストラクタは、この形式ではない場合、それはコンパイル時にエラーになります。
6)この()、スーパー()は、これは他のコンストラクタを呼び出すためにバインドされているので、同じことが上の同じコンストラクタ文を持っている、他の施工方法は、superステートメントをも存在している必要があり、コンストラクタ内で表示することはできません文の意味を失った、コンパイラは渡しません。
7)この超両方は、静的方法に使用することができない、オブジェクトを指します。
スーパー概要
これは、superキーワードに似て、これはクラスの現在のインスタンスを示すために使用され、スーパークラスは、親を参照するために使用されます。
ドットでスーパーサブクラスで使用することができる(。)親クラスのメンバ変数とメソッドを得ました。
また、スーパーサブクラスサブクラスで使用することが、Javaは自動的に上位クラスにトレースすることができます。
親の行動が呼び出され、それが行動のこの種の行為の場合と同じであり、そして行動は、親クラスで発生呼び出す必要はありません、それは自動的に上流階級にまでさかのぼることができます。
スーパーキー機能:
プライベート宣言親クラス変数を呼び出します。
すでにカバー方法を取るためにポイント。
メソッド名として親クラスのコンストラクタを示します。
覆い隠された変数やメソッドを呼び出します
結果:
動物は移動することができます
犬が歩くと実行することができます
忘れないでください:動物は人間の良い友達です
あなたがこれまでのプロセスを見つけるまで移動()メソッドはまた、親クラスの親として、いくつかの祖先クラスで定義することができ、Javaは遡って、見上げるされていたであろう。
プライベートサブクラスが表示されていないように、データメンバーが宣言されているため、スーパーの親クラスを呼び出す変数を非表示にすることにより、あなたは、親クラスのゲッターメソッドを宣言しなければなりません。
、学習教材の多くは、上記のすべて、ある学習交換基を推奨するためにJavaを学ぶ220、百四十から二真ん中と、最終的には、906
親クラスのコンストラクタを呼び出します
多くの場合、デフォルトコンストラクタは、親クラスのオブジェクトを初期化します。もちろん、スーパーコンストラクタ呼び出し親クラスを表示するために使用されます。
結果: 私はかわいい子犬です、私の名前は花と呼ばれる、私は3歳です
注:スーパー()、またはこの()の両方、コンストラクタの最初の行に配置されなければなりません。
注目すべきは:コンストラクタで別のコンストラクタを呼び出す、呼び出しアクションは、開始位置の大半を配置する必要があります。
あなたは、コンストラクタ以外の方法では、コンストラクタを呼び出すことはできません。
唯一のコンストラクタコンストラクタメソッド呼び出し内。
コンストラクタメソッドでは、どちらのコールスーパーは()()これを呼び出さない場合、コンパイラが自動的にスーパークラスのコンストラクタへの呼び出しを挿入しますが、パラメータなし。
最後に、このスーパーとの違いに注意してください。引用はスーパー、別のオブジェクト変数のスーパーに割り当てることができないオブジェクトではありません、それだけで特別なキーワードは、親クラスのメソッドを呼び出すようにコンパイラに指示します。