こんにちは、ちこです🌷
またまた、今日の復習から始めます。
・オブジェクト指向
・インスタンス化
・コンストラクタ
オブジェクトとは、日本語訳すると、「物」ということらしいです。
つまり、クラスやメソッドを物として見て、それらの物と物を組み合わせてシステム全体を作り上げていくということらしいです。
言っていることってとってもシンプルで、わかりやすいですよね。
だけど、これをいざ実行しようとすると、とても難しいのです・・・
だから先輩たちは苦労したと言っているわけです(笑)
何がそんなに難しいことなのか?と聞かれたとき、私の場合は何が何だかわからなくなってきてしまうところです。
クラスの型とその変数をインスタンス化して~と言われると、もうわけがわかりません。
正直に申しますと、一生分かり合えないかもしれないと思っていました。
だけど、最近少しずつですが、このオブジェクト指向と仲良くなれた気がします(笑)
まず、クラスの役割というのは、いわば金型のようなものです。
粘土のようなものを人の形をした金型に当てはめたとしましょう。
人の形をした金型は、歩いて走ってしゃべれる”人”にはなりません。あくまでも金型です。
金型の役目は人の形を作るためだけにあるので、同じ型であれば一つで十分です。
その金型の役割をクラスが担っています。
では、どうすれば金型(クラス)に当てはめた粘土が実体として動けるようになるのでしょうか。
そこで出てくるのがインスタンス化です。
インスタンス化とは、ここでいう粘土のようなもので、金型に当てはめたものを実際に歩いて走ってしゃべれる人にするためのものです。
インスタンス化して初めて一人の人として誕生するのです。
例)Humanクラス(Human型)の変数humanをインスタンス化 Human human = new Human();
上記のはHuman型の例です。
Humanという型に入ったhumanという名前の人ということになります。
インスタンス化をして、名前をもって、ようやくクラスで使えるのです。
最初はわけわからなかったのですが、最近はわかるようになってきました。
またまた難しそうな言葉が出てきました~~笑
プログラミング言語ってなんで全部難しそうな言葉がたくさん出てくるんだろう・・・泣
もっと子供でもわかる言葉にしてほしいですよね笑
コンストラクタとは、簡単に言うと情報を入れることです。
金型(クラス)を作りまして、それを実体化(インスタンス化)しましたが、その実体の中に情報は何も入っていません。
ということで、コンストラクタの出番です!!!
ただ単に情報を入れるだけです。
コンストラクタ(引数が1つの場合) class Human{ //フィールド宣言 String name; //コンストラクタ Human(String name){ this.name = name; } }
上記の例は、コンストラクタの引数が1つの場合。
まず、 //フィールド宣言 というところで、 String name; というふうに宣言しています。
このHumanクラスで名前を指すとなった場合、主体になるのは、このString nameです。
その下に //コンストラクタ というふうに書いてありますが、ここで実際に情報を入れているのです。
this.name = nameって、nameにnameを代入していることになります。
意味わからない!となるかもしれませんが、つまり、String nameとHuman(String name)のnameは別物なのです。
引数のString nameをフィールドで宣言したString nameに代入してるわけです!
そして、このnameの前についているthisですが、これは、「フィールドのnameのことですよ」という意味を表しています。
つまり、nameが2つもあるので、1つ目はString name、2つ目は引数のnameでごちゃまぜにならないように「this」を付けるのです。
とても難しいと感じますが、丁寧に一つずつ理解していけば確実にプログラムが組めるようになるということを教わりました。
長くなりましたが、今日の復習は以上です!!