「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典イメージぴよ画像「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典

サブクラス

pointこの用語のポイント

pointクラスだよ

point継承先だよ

スポンサーリンク

簡単に書くよ

サブクラス(英:subclass)とは

秘伝を伝授された方のクラス(オブジェクト指向の話で出てくる概念のひとつで「設計図」っぽいやつ)のこと。
もう少し具体的に書くと

クラスの継承(元ネタの要素を受け継ぐこと)の話で出てくるクラスのひとつ
であり

新しく作られた方(継承先)のクラスのこと
です。


image piyo

詳しく書くよ

順番に見ていきましょう。
まずは予備知識として

オブジェクト指向
クラス
継承


について説明します。
「そんなの説明されなくても知ってるよ!」な人は適当に読み飛ばしてください。

オブジェクト指向は「『モノ』に注目した考え方」です。
「どんなやつで、どう動く」に注目した考え方です。

サブクラス

詳細は、用語「オブジェクト指向」の説明を ご覧ください。

サブクラス2

オブジェクト指向の理念に沿って作られたプログラミング言語を「オブジェクト指向プログラミング言語」と言います。
有名どころでは、Javaなんかがオブジェクト指向プログラミング言語です。

オブジェクト指向プログラミング言語では

クラス
インスタンス
オブジェクト


の3つの用語が よく出てきます。
この3つは とても大事です。
ざっくりとで良いので関係性を覚えておいてください。

専門家の人からは怒られそうですが、ものすごい大雑把に説明すると

クラス:設計図
インスタンス:実際に作った物
オブジェクト:モノ(クラスとかインスタンスとかを、ふんわりと表現したもの)


です。

クラスは「設計図」です。
「それって、どんなもの?」を示しています。
ピヨ太君の頭の中にある「ピヨピヨ時計は こんな感じだな」がクラスです。

サブクラス3

インスタンスは「実際に作ったもの」です。
クラス(設計図)に書かれた「それって、どんなもの?」を形にしたものを指します。
実際に作ったピヨピヨ時計がインスタンスです。

サブクラス4

オブジェクトは……モノですよ、モノ。
結構ざっくりとした使われ方をする用語です。
「クラスとかインスタンスを ふんわりと表現したもの」くらいに解釈してください。
よく分からない人は忘れてしまって かまいません。

サブクラス5

継承は「元ネタから要素を受け継いで、元ネタの特徴を備えた新しいのを作ること」です。

例えば、そうですね。
ここにピヨ太ママがいたとしましょう。

サブクラス6

ピヨ太ママの要素を受け継いだピヨ太君を新しく作りました。
ピヨ太君にはピヨ太ママの特徴が色濃く受け継がれています。

サブクラス7

これが継承です。
継承元(ピヨ太ママ)から要素を受け継いで、継承元の特徴を備えた新しいの(ピヨ太君)を作る行為です。

なお、このときのピヨ太ママとピヨ太君は「親子関係にある」と言います。

サブクラス8

ピヨ太ママはピヨ太君の「」です。

サブクラス9

ピヨ太君はピヨ太ママの「」になります。

サブクラス10

以上を踏まえて、本題に入ります。

継承の考え方はクラスにも当てはめられます。
ピヨ太ママクラスを継承してピヨ太ママクラスの特徴を備えたピヨ太君クラスを新しく作れるのです。

サブクラス11

このときの新しく作られた方、ピヨ太君クラスが「サブクラス」です。
サブクラスは

継承先のクラス

です。

サブクラス12

あと、ついでなので書いておくと、最初からいた方のピヨ太ママクラスは「スーパークラス」と言います。
スーパークラスは

継承元のクラス

です。

サブクラス13

気が向いたら、合わせて覚えてあげてください。

サブクラス:継承先のクラス
スーパークラス:継承元のクラス


です。

せっかくなので、もう少しプログラミングちっくな例も載せておきましょう。

例えば、Javaで書いた以下のソースコード(人間語で書いたプログラムの元ネタ)があったとします。

//ピヨ太ママクラス
class PiyotaMama{
    public String seikaku="キレたら怖い";
}

//ピヨ太君クラス
class Piyota extends PiyotaMama{
    public String syumi="昼寝";
}

//主処理
public class test{
    public static void main(String[] args){
        //ピヨ太君クラスのインスタンス「piyota」を生成
        Piyota piyota = new Piyota();

        //表示
        System.out.println("ピヨ太君の性格:" + piyota.seikaku);
        System.out.println("ピヨ太君の趣味:" + piyota.syumi);
    }
}


このソースコード内の

//ピヨ太ママクラス
class PiyotaMama{
    public String seikaku="キレたら怖い";
}

//ピヨ太君クラス
class Piyota extends PiyotaMama{
    public String syumi="昼寝";
}


が継承しているところです。

class Piyota extends PiyotaMama{



「PiyotaMama」クラスを継承(extends)した「Piyota」クラス

を意味しています。

継承先の「Piyota」クラスがサブクラスです。
継承元の「PiyotaMama」クラスがスーパークラスになります。

        //表示
        System.out.println("ピヨ太君の性格:" + piyota.seikaku);
        System.out.println("ピヨ太君の趣味:" + piyota.syumi);


の部分は、実際にピヨ太君クラス(を実体化したもの)を使っているところです。
ピヨ太君クラスには「seikaku」がありません。
ですが、スーパークラスのピヨ太ママクラスに「seikaku」があります。
ピヨ太ママクラスの要素を受け継いでいるピヨ太君クラスには見えないだけで「seikaku」があるのです。

以上で用語の意味自体の説明は終わりですが、呼び方について補足しておきます。

サブクラスは「子クラス」や「派生クラス」と表現されることも あります。

サブクラス14

同様に、スーパークラスは「親クラス」や「基底クラス」と表現されることも あります。

サブクラス15

それぞれの呼び名の対応は

・「スーパークラス」と「サブクラス」
・「親クラス」と「子クラス」
・「基底クラス」と「派生クラス」


です。
気が向いたら、併せて覚えてあげてください。


image piyo2

一言でまとめるよ

まぁ「サブクラス」って単語が出てきたら「継承先のクラス(オブジェクト指向の話で出てくる概念のひとつで「設計図」っぽいやつ)なんだな~」と お考えください。

一番上に戻るよ
スポンサーリンク
書籍画像061
書籍画像053

おまけ

■訳してみるよ

「sub(サブ)」という接頭辞が付くと「~の下」や「副~」的な意味になります。
「class(クラス)」の意味は「種類」とか「階級」とか「授業」とか「学級」とかです。
何となく くっつけると

副種類

となります。


■検索してみる?




書籍画像
わわわ説明術コラム
宣伝だよ
インフルエンサー六法 活動開始から情報発信、収益化までに潜むトラブル対策50
「分かった!」と思わせる説明の技術 知識ゼロの相手にも伝わるようになる本
わかばちゃんとつくって、壊して、直して学ぶ NewSQL入門