javaのスーパーキーワード
super
javaのキーワードは、直接の親クラスオブジェクトを参照するために使用される参照変数です。サブクラスのインスタンスを作成するたびに、親クラスのインスタンスは暗黙的に作成され、スーパー
参照変数によって参照されます。
javaスーパーキーワードの使用
super
は、直接親クラスのインスタンス変数を参照するために使用されます。 スーパー
キーワードを使用して、親クラスのデータメンバーまたはフィールドにアクセスできます。親と子のクラスが同じフィールドを持っている場合は、それを使用してください。
class Animal {
String color = "white";
}
class Dog extends Animal {
String color = "black";
void printColor() {
System.out.println(color); // 打印 Dog 类的颜色
System.out.println(super.color); // 打印 Animal 类的颜色
}
}
class TestSuper1 {
public static void main(String args[]) {
Dog d = new Dog();
d.printColor();
}
}
output:
]黒 白
上記の例では、動物クラスと犬のクラスの両方が公共の属性の色を持っています。色プロパティを印刷すると、デフォルトで現在のクラスの色が印刷されます。親プロパティにアクセスするには、スーパー
キーワードを使用する必要があります。
super
を使用して、親クラスのメソッドを呼び出すことができます。 super
キーワードを使用して、親クラスのメソッドを呼び出すこともできます。子クラスに親クラスと同じ方法が含まれている場合、使用する必要があります。言い換えれば、メソッドが書き直された場合、それが使用されます。
class Animal {
void eat() {
System.out.println("eating...");
}
}
class Dog extends Animal {
void eat() {
System.out.println("eating bread...");
}
void bark() {
System.out.println("barking...");
}
void work() {
super.eat();
bark();
}
}
class TestSuper2 {
public static void main(String args[]) {
Dog d = new Dog();
d.work();
}
}
output:
]食べる... barえる...
上記の例では、動物クラスと犬の両方のクラスには、犬のクラスからEAT()メソッドを呼び出す場合、DOGクラスのEAT()メソッドをデフォルトで呼び出します。ローカル方法に与えられます。親クラスメソッドを呼び出すには、スーパー
キーワードを使用する必要があります。
super
は、親クラスコンストラクターを呼び出すために使用されます。 super
キーワードを使用して、親クラスコンストラクターを呼び出すこともできます。簡単な例を見てみましょう:
class Animal {
Animal() {
System.out.println("animal is created");
}
}
class Dog extends Animal {
Dog() {
super();
System.out.println("dog is created");
}
}
class TestSuper3 {
public static void main(String args[]) {
Dog d = new Dog();
}
}
output:
]動物が作成されます 犬は作成されます
注: super()
または this()
がコンストラクターにない場合、コンパイラは各クラスのコンストラクターに super()
が自動的に追加されます。 ]。 (追加する)
コンストラクターが存在しない場合、コンパイラがデフォルトのコンストラクターを自動的に提供することはよく知られています。ただし、 super()
を最初のステートメントとして追加します。 (追加する)
super
キーワードの別の例。ここで、 super()
はコンパイラによって暗黙的に提供されます。 (追加する)
class Animal {
Animal() {
System.out.println("animal is created");
}
}
class Dog extends Animal {
Dog() {
System.out.println("dog is created");
}
}
class TestSuper4 {
public static void main(String args[]) {
Dog d = new Dog();
}
}
output:
]動物が作成されます 犬は作成されます
super
例:実用的なアプリケーション(補足する)
super
キーワードの実用的なアプリケーションを見てみましょう。ここでは、EMPクラスが人クラスを継承するため、人のすべてのプロパティがデフォルトでEMPに継承されます。すべてのプロパティを初期化するために、サブクラスの親クラスコンストラクターを使用しています。このようにして、親クラスのコンストラクターを再利用しています。
class Person {
int id;
String name;
Person(int id, String name) {
this.id = id;
this.name = name;
}
}
class Emp extends Person {
float salary;
Emp(int id, String name, float salary) {
super(id, name); // 重用父类构造函数
this.salary = salary;
}
void display() {
System.out.println(id " " name " " salary);
}
}
class TestSuper5 {
public static void main(String[] args) {
Emp e1 = new Emp(1, "ankit", 45000f);
e1.display();
}
}
output:
]1 ankit 45000
参照: https://www.javatpoint.com/super-keyword
]この改訂された出力は、異なる言葉遣いと文の構造を使用しながら、元の意味を維持します。 ]
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3