【JavaSilver #04】『緋弾の継承は成された』
継承、抽象クラス、インターフェイス、いろいろとありますが……全部、一緒じゃん!!!!(違う)
そんな理解度の私が、その辺りを書いて、書いて、書いて覚えまくるぞ~~~~~~な記事です。
継承って何???
継承とかいう、無駄に中二臭くてカッコいい言葉。これさえ覚えれば、日頃からカッコいい言葉を連発できるので、覚えよう。
先輩プログラマーに向けて、言ってやるのです。『クラスの継承は成された』――と。
ちなみに、以下、ライトノベル『緋弾のアリア』のネタバレが含まれています。よろしくお願いします。
// 親クラス(スーパークラス)
public class Sherlock {
public void scarletBallet() {
System.out.print("緋弾の継承は成された");
}
}
public class Aria extends Sherlock {
public void kazaana() {
System.out.print("風穴開けるわよ!");
}
}
↑こんな感じのが継承。
Sherlock クラスを、 Aria クラスが継承しています。
5巻にて、シャーロックが、アリアに緋弾を撃ち込むシーンを、上の2クラスで再現しています。
アリアには、緋弾の継承が成されたので、
public static void main(String args[]) {
Aria aria = new Aria();
aria.scarletBallet();
}
実行結果:『緋弾の継承は成された』
そして、アリアちゃんなので、もちろんキンジに風穴を開けることができます。
public static void main(String args[]) {
Aria aria = new Aria();
aria.kazaana();
}
実行結果:『風穴開けるわよ!』
シャーロックも、緋弾は使えますが……
public static void main(String args[]) {
Sherlock sherlock = new Sherlock();
sherlock.scarletBallet();
}
実行結果:『緋弾の継承は成された』
キンジに風穴は開けられない。(いや、開けられるだろうけど、『風穴開けるわよ!』とはいわない)
public static void main(String args[]) {
Sherlock sherlock = new Sherlock();
sherlock.kazaana();
}
実行結果:コンパイルエラー(多分。試してません)
これが、継承ってヤツらしい。
ここからは、もうこの題材で説明する意味もないのですが……引き続き、アリアとシャーロックで。
public static void main(String args[]) {
Sherlock sherlock = new Aria(); // これはOK
Aria aria = new Sherlock(); // これはダメ
}
親に子は入れられるが、子に親は入れられない。まあ、よく考えれば当然ではありますが……。
ただし、継承しても引き継げないものもあります。
・コンストラクタ
・privateなメソッド、フィールド
public class Sherlock {
private String gender = "man";
public void print() {
System.out.print(gender);
}
}
public class Aria extends Sherlock {
}
↑これでは、アリアに 変数 gender は継承されません。privateって言ってるんだから、そりゃそうか。
継承で注意すべき点はこのあたり? でしょうか?
細かいルールなんかはありますが、ちょっと覚えてられないので後回し。6割とれればいいの精神。
それでは、さようなら。
……なんだこの記事は。
この記事が気に入ったらサポートをしてみませんか?