スーパークラスコンストラクタに配置されたコードの実行を防ぐことはできますか?この例では、出力はJavaはコンストラクタのサブクラスからのみコードを実行します
From Person From Student
ですが、私はFrom Person
をプリントアウトする必要はありません。 super(a, n);
を削除すると、プログラムはコンパイルされません。サブクラスからのメッセージだけを出力することは可能ですか?
class Person {
private int age;
private String name;
public Person(int a, String n) {
this.age = a;
this.name = n;
System.out.println("From Person");
}
public int getAge() {
return age;
}
public void setAge(int a) {
this.age = a;
}
public String getName() {
return name;
}
public void setName(String n) {
this.name = n;
}
}
class Student extends Person {
private String specialization;
public Student(int a, String n, String s) {
super(a, n);
specialization = s;
System.out.println("From Student");
}
public String getSpecialization() {
return specialization;
}
public void setSpecialization(String s) {
this.specialization = s;
}
}
public class Classes {
public static void main(String[] args) {
Student student_Jack = new Student(20, "Jack", "IT");
}
}
なぜこれをやりたいですか? – Clayn
'System.out.println(" From Person ");' ...? – khelwood
スーパークラスの完全なコンストラクタロジックが呼び出されないようにしたいのですか、または単に出力を消したいだけですか? – Gernot