Java には this と super という 2 つの非常に特殊な変数があります。これら 2 つの変数は使用前に宣言する必要はありません。この変数はメンバー関数内で使用され、現在のオブジェクトを指します。現在のオブジェクトは、現在実行中のメソッドを呼び出すオブジェクトを指します。スーパー変数は、スーパークラスのコンストラクターを直接指し、スーパークラス内の変数とメソッドを参照するために使用されます。どれもとても便利な変数なので、thisとsuperの使い方を紹介したいと思います。
1. this
まずコードを見てみましょう:
class PersonInformation
{
String name, sex, countryity, address
int age;
void PersonInformation(String p_name,String p_性別,String p_nationality,String p_address,int p_age)
{
name=p_name;
gender=p_gender;
nationality=p_nationality;
address=p_address;
age=p_age ;
}
}
あなたは、 PersonInformation() 関数内のこのオブジェクトのメソッド プロンプトがオブジェクトのメンバー変数に直接アクセスでき、同じスコープ内で同じ名前の 2 つのローカル変数を定義することは許可されていないことがわかります。本当にクラスを作りたい メンバー変数がメソッドのパラメーターまたはメソッド自体によって定義されたローカル変数と同じ名前を持つ場合、そのメンバー変数を、同じ名前のメソッドのパラメーターまたはローカル変数と区別する方法を見つける必要があります。これには、 this 変数を使用する必要があります。次に、PersonInformation クラスのコンストラクターの各パラメーターがオブジェクトのメンバー変数と同じ名前になり、メンバー変数の初期値がパラメーターで与えられるように上記のコードを書き換えたいと思います。
class PersonInformation
{
String name, sex,nations, address;
int age;
これはメソッド本体で使われていることが分かります。現在実行中のメソッドを参照するオブジェクト インスタンスを指すようにするため、この変数の型は常に、以前に実行されたメソッドを含むクラスであることを区別する必要があります。明らかに、パラメーター名とメンバー変数を記述することはできません。 name=name として指定します。パラメータまたはローカル変数名がクラスのメンバ変数と同じ名前である場合、パラメータまたはローカル変数の優先度が高いため、メソッド本体内のパラメータ名またはローカル変数名は非表示になります。したがって、メンバー変数の値を指定するには、これを使用して現在のオブジェクトを明示的に示す必要があります。
場合によっては、個別のインスタンス オブジェクトにアクセスするのではなく、現在のオブジェクトに完全にアクセスすることもできます。これを使用して、Java の toString() メソッドを使用することもできます (このオブジェクトの文字列の説明を返すことができます)。が System.out.PRintln メソッドに渡されると、このメソッドはこのオブジェクトの toString メソッドを呼び出し、結果の文字列を出力します。したがって、次のメソッド System.out.println(this ) を使用して現在のステータスを出力できます。あらゆる組み込みメソッドパラメータの。
this には別の使用法があります。これは、コンストラクターの最初のステートメントです。このコンストラクターは、同じクラスの別の相対コンストラクターを呼び出します。次の例を参照してください:
class UserInfo
{
public UserInfo(String name)
{
this(name,aNewSerialNumber);
}
public Userinfo(String name,int number)
{
userName=name;
userNumber=number;
}
}
UserInfor newinfotable = new UserInfo("Wayne Zheng") を呼び出すと、UserInfo(String) が自動的に呼び出されます
上記が入っています。 Java 2 つの特殊変数 this と super の内容については、PHP 中国語 Web サイト (www.php.cn) で関連記事を参照してください