スーパークラスを継承したサブクラスが通常のクラスと比べて何が違うのか、覚えるための自分用メモです。
継承とは?
既存のクラスのフィールドとメソッドを引き継いで、新しいクラスを定義することです。
サンプルプログラム
例えば、以下のクラスをSubClass1
クラスに継承するとします。
SuperClass.java
public class SuperClass {
private String name;
public SuperClass(String name) {
this.name = name;
}
public String getName() {
return this.name;
}
}
その場合、以下のように記述します(親クラスに引数なしのコンストラクタが無い場合、super()
でコンストラクタを呼び出す必要あり)。
SubClass1.java
public class SubClass1 extends SuperClass {
public SubClass1(String name) {
super(name);
}
}
親のSuperClass
クラスをスーパークラス、子のSubClass1
クラスをサブクラスといいます。
継承したサブクラスをインスタンス化する
継承したサブクラスをインスタンス化する記述は、通常のインスタンス化と変わりません(スーパークラス型でインスタンス化も可能)。
Main.java
public class Main {
public static void main(String[] args) {
SuperClass s = new SubClass1("名前1");
}
}
継承したメソッドを呼び出す
継承したメソッドは、サブクラスに記述が無くても呼び出すことができます。
Main.java
public class Main {
public static void main(String[] args) {
SuperClass s = new SubClass1("名前1");
print(s);
}
static void print(SuperClass s) {
System.out.println(s.getName());
}
}
実行結果
名前1