クラス宣言についてご説明いたします。クラス宣言と構造体宣言はそっくりさんです💖
ソーラー「では クラスの仕組みについて考察してみよ~う」
てんC「ソーラーさん 楽しそうですね。」
ソーラー「ここで 適切な解説をしよう
(ボケまくろうかな・・)とか
おもったりしててね・・・
はしゃいじゃうわけなんだ😊」
マックス「クラスか・・・
どんな仕組みなんだ?」
ソーラー「まずは
オーソドックスに
クラス宣言というものから考察してみたいと思います
クラス宣言とは次のような形式でおこなわれます。
class クラス名{
アクセス指定子:型名 変数名;(変数宣言)
アクセス指定子:型名 変数名;(変数宣言)
・
・
・
アクセス指定子:自作関数宣言;
アクセス指定子:自作関数宣言;
アクセス指定子:自作関数宣言;
・
・
・
};
solarplexuss「class クラス名の後にブロック{}が続いてる・・・」
マックス「くくっ
面白いなあ・・・
まったく わから~~ん
なんだ これは
これで
TVゲームの中の車が作製できるのか?」
ソーラー「もっち~です
このクラス宣言の仕組みがどうなっているかを見ていくね
"クラスとは"
"あるモノのデータを格納する変数とそのデータを格納している変数に作用する関数を1つにまとめるためにあります"
そのことを意識して
クラス宣言をよくみると・・・
👇
class クラス名{
アクセス指定子:型名 変数名;(変数宣言)
アクセス指定子:型名 変数名;(変数宣言)
・
・
・
アクセス指定子:自作関数宣言;
アクセス指定子:自作関数宣言;
アクセス指定子:自作関数宣言;
・
・
・
};
👆
クラス宣言においては
データを格納するための変数の変数宣言と
(その変数に格納されるデータに作用するための)自作関数宣言
が
ブロック{}内で1まとめになっているのがわかります
class クラス名👉{
アクセス指定子:型名 変数名;(変数宣言)
アクセス指定子:型名 変数名;(変数宣言)
・
・
・
アクセス指定子:自作関数宣言;
アクセス指定子:自作関数宣言;
アクセス指定子:自作関数宣言;
・
・
・
};👈
👉{};👈
👉ブロック{}👈の中に
アクセス指定子:型名 変数名;(変数宣言)
アクセス指定子:型名 変数名;(変数宣言)
・
・
・
アクセス指定子:自作関数宣言;
アクセス指定子:自作関数宣言;
アクセス指定子:自作関数宣言;
・
・
・
が
記述されているね」
てんC「クラス宣言・・・
この記述形式は
どこかでみたような・・・
似たようなものに構造体宣言というものが
ありませんでしたか?」
マックス「あった、あった
(もう 忘れとったんか~い solarplexussより)
そういえば
構造体宣言というものがあったじゃないか
というか・・・
.....🐤
さっきのエピソードで登場してきただろう
構造体宣言はこれだ!
👇
struct 構造体名{
型名 変数名;(変数宣言)
型名 変数名;(変数宣言)
・
・
・
};
👆
構造体宣言とクラス宣言
なんかめっちゃ似てないか?」
ソーラー「それもそのはず
そもそも
構造体とは
あるモノのデータ管理を容易にするために
あるモノに関係のあるデータを格納する複数の変数を
😊1まとめに管理する😊
為に生成されるからです
そして
構造体宣言を実行して構造体を作製したあとは
構造体変数宣言を実行して
構造体変数を作製することになりました
この構造体変数は
あるモノに関係のあるデータを格納する複数の変数を
1まとめに管理する
役割を果たすために
用いられましたね
構造体変数が生成されると同時に生成される
構造体変数のメンバ変数が
あるモノに関係のあるデータを格納する複数の変数の役割を果たすことになるのですが
結局のところは
1つの構造体変数をもちいて
あるモノに関係のあるデータを
メモリに格納、管理することができるようになります
例えば
1つの構造体変数をもちいて
(イコール構造体変数のメンバ変数を用いて)
ある1人の生徒の生徒番号、身長、体重、視力のデータ
を
メモリに格納、管理することができるようになります」
マックス「思い出した
構造体宣言
👇
struct Cube{
型名 変数名;(変数宣言)
型名 変数名;(変数宣言)
・
・
・
};
が実行された場合
Cube
が
構造体名で
構造体が作製されるんだった
そして
さっきのエピソードでは
cube1のCube型の構造体変数宣言
struct Cube cube1;
の実行により
構造体変数cube1が生成されたわけだ
cube1のCube型の構造体変数宣言
struct Cube cube1;
の実行により生成される
構造体変数cube1をもちいて
つまり
構造体変数cube1のメンバ変数をもちいて
立方体cube1のデータをまとめて管理できたわけだ
"クラスとは"
"あるモノのデータを格納する変数とそのデータを格納している変数に作用する関数を1つにまとめるためにあります"
だっただろう
で
"構造体とは"
"あるモノのデータを格納する変数を1つにまとめるためにあります"
というわけだ
なるほど・・・にている・・・
では
構造体とクラスの違いとはなにかか・・・
まず
構造体宣言とクラス宣言を観察してみるかにゃ🐈
クラス宣言
class クラス名{
アクセス指定子:型名 変数名;(変数宣言)
アクセス指定子:型名 変数名;(変数宣言)
・
・
・
アクセス指定子:自作関数宣言;
アクセス指定子:自作関数宣言;
アクセス指定子:自作関数宣言;
・
・
・
};
と
構造体宣言
struct 構造体名{
型名 変数名;(変数宣言)
型名 変数名;(変数宣言)
・
・
・
};
か・・・
ちがいといえば
まず
クラス宣言をおこなうときには class
を
構造体宣言をおこなうときは sturct
をもちいるってことか・・・
あと
クラス宣言内の
アクセス指定子:型名 変数名;(変数宣言)
アクセス指定子:型名 変数名;(変数宣言)
だ
なぜか
型名 変数名;(変数宣言)
に
アクセス指定子と呼ばれるものがもちいられているな
そして
自作関数宣言か・・・
なぜか
クラス宣言内では
自作関数宣言をおこなっている・・・?
だが
クラス宣言
class クラス名{ };
と
構造体宣言
struct 構造体名{ };
の形式は{}でくくるあたり
似てるな」
solarplexuss「ちょっとそのお
たぶんなんだけど
クラス宣言内では
自作関数宣言をおこなっている
のが
構造体宣言との主な違いなんじゃない?」
新規登録で充実の読書を
- マイページ
- 読書の状況から作品を自動で分類して簡単に管理できる
- 小説の未読話数がひと目でわかり前回の続きから読める
- フォローしたユーザーの活動を追える
- 通知
- 小説の更新や作者の新作の情報を受け取れる
- 閲覧履歴
- 以前読んだ小説が一覧で見つけやすい
アカウントをお持ちの方はログイン
ビューワー設定
文字サイズ
背景色
フォント
組み方向
機能をオンにすると、画面の下部をタップする度に自動的にスクロールして読み進められます。
応援すると応援コメントも書けます