コミュ障だから明日が僕らをよんだって返事もろくにしなかった

何かを創る人に憧れたからブログをはじめたんだと思うよ

スーパーファミコンはファミコンのスーパークラスだからスーパーファミコンなんだよという話

ファミコンの歴史

ファミコンとは、1983年に任天堂から発売された家庭用ゲーム機のことです。その7年後の1990年に、ファミコンの概念を継承したスーパーファミコンというものが生まれました。つまり、そういうことです(?)。ファミコンのスーパーなやつがスーファミなんです(??)。


Javaでなんかやるよ

といったわけで、そんなファミコンの歴史をJavaで再現してみようと思います。突然、なにを言っているんだと思われる方も多いと思います。僕もなんだこの記事はと思いながらエントリしちゃってます。どうしたものか……。

とりあえず書いてしまったものは仕方がありません。どんどんやっていきましょう。
書いているうちにいい感じに話を丸め込めると信じて……、進めていきましょう。


まずは、スーパークラスについて

スーパークラス
継承関係にあるクラスにおいて、継承元となるクラス。文法的には、extendsの右側に書かれたクラス。

継承とかクラスとかなんかいろいろよくわからん概念でてきますけど、基本的には似たような機能を再利用するためのOOP的お作法です。こんなことを知らなくてもプログラムなんて動きます(暴論)。それでなぜこんなことをやるのかというと、スーパーという単語だけで記事を書きたかったからですね。

スーパーという単語だけでここまでつなぎましたが、僕はもう限界です

スーパーの基本的な意味は上の引用部分みたいな感じになります。
これ以上だらだら文章を書くこともできそうにないので、早速コードを書いてスーパーを体感してみようと思います。

できました。

class Game{
	public static void main(String[] args){
		SFC name = new FC();
		name.display();
	}
}

class SFC{
	public void display(){
		System.out.println("SUPER Famicom");
	}
}

class FC extends SFC{
	public void display(){
		super.display();
		System.out.println("Family Computer");
	}
}

できたらコンパイルして、Main部分を実行して確認してみます。
f:id:andron:20170514172557p:plain

FCクラスのほうでsuper使うよ宣言しないと「ファミコン」しか表示されない何かができました。
あれ…?スーパーファミコンは…?継承って……?

うん……、すごくコメントし辛い。
とりあえず何やってるか見ていきましょう。


Gameクラス(メインになるやつ)

 スーパークラス 変数名 = new サブクラス();
 変数名.メソッド();

で構成されています。
雑に言いますと上のやつが継承しますよ宣言、下のやつがその処理の呼び出し宣言といった感じです。



そもそもクラスってなんぞやみたいなものがあると思います。クラスは機械が読めるようにしたTODOリストです。「買い物をする」「料理をする」とかそんなことを書いたTODOリストって感じです。じゃあ、そんな感じでもう一度Gameクラスが何をやっているか見ていきましょう。

 FCのToDoリストを見て、SFCのToDoリストのやり方で同じような方法があるからFCの流儀にして(上書きして)遂行してね

そんな感じのことをやっています。上書きと言っても、消えてるわけでないのでsuperを使えば継承元の処理を呼び出せます。ただ今回の場合は便利さをあまり実感できないですね……。

とりあえずで作ってみましたが結局スーパーって何だったんでしょうね(哲学)。