戦国IT - 情報処理技術者試験の過去問対策サイト
ブログお知らせお問い合わせ料金プラン

応用情報技術者 2016年 秋期 午前247


問題文

オブジェクト指向言語のクラスに関する記述のうち、適切なものはどれか。

選択肢

インスタンス変数には共有データが保存されているので、クラス全体で使用できる。
オブジェクトに共通する性質を定義したものがクラスであり、クラスを集めたものがクラスライブラリである。(正解)
オブジェクトはクラスによって定義され、クラスにはメソッドと呼ばれる共有データが保存されている。
スーパクラスはサブクラスから独立して定義し、サブクラスの性質を継承する。

🔒 解説は解答すると表示されます

クラスとクラスライブラリ【午前2解説】

正解の理由

選択肢のうち、は「クラスとはオブジェクトに共通する性質(属性・振る舞い)を定義するものであり、複数のクラスをまとめたものがクラスライブラリである」という点を正しく表しています。クラスはオブジェクトの設計図であり、インスタンス(オブジェクト)はそのクラスから生成されます。また、クラスライブラリは再利用可能なクラス群やAPIの集合を指し、言語やプラットフォームが提供する基本機能を集めたものです。したがって選択肢が適切です。

解法ステップ

  1. 「クラス」の定義を思い出す:設計図としての役割(属性と振る舞いの定義)。
  2. 各選択肢がその定義に合致するかを検証する。
  3. 「クラスライブラリ」の意味(クラス群の集合)を確認する。
  4. 継承や変数(インスタンス変数/クラス変数)の用語が正しく使われているかをチェックする。
  5. 誤用があれば除外して正答を確定する。

選択肢別の誤答解説

  • ア: 「インスタンス変数には共有データが保存されているので、クラス全体で使用できる。」
    • 誤り。インスタンス変数(非静的フィールド)は各インスタンスごとに固有のデータを保持する。クラス全体で共有するデータはクラス変数(静的変数、static)である。
  • : オブジェクトに共通する性質を定義したものがクラスであり、クラスを集めたものがクラスライブラリである。
    • 正しい。クラスは属性(フィールド)と振る舞い(メソッド)を定義するもので、クラスライブラリはこれらの集合体(再利用可能なAPI)である。
  • ウ: 「クラスにはメソッドと呼ばれる共有データが保存されている。」
    • 誤り。メソッドは振る舞い(関数・操作)を定義するものであり、データではない。共有データを指すなら「クラス変数(静的変数)」が該当する。
  • エ: 「スーパクラスはサブクラスから独立して定義し、サブクラスの性質を継承する。」
    • 誤り。継承の方向を取り違えている。正しくは「サブクラスがスーパクラスの性質(属性・振る舞い)を継承する(スーパクラス→サブクラスへ伝わる)」である。スーパクラスはサブクラスに対して基底となる性質を提供する。

よくある誤解

  • インスタンス変数とクラス変数を混同する。
    • インスタンス変数は「各インスタンス固有」、クラス(静的)変数は「クラス全体で共有」される。
  • 継承の方向の取り違え。
    • 「継承される側(親)」がスーパクラスで、「継承する側(子)」がサブクラス。性質は親→子へ伝わる。
  • メソッドをデータだと考える。
    • メソッドはデータではなく手続き(振る舞い)を表す。データと振る舞いは明確に区別する。

補足コラム

  • クラスライブラリの具体例
    • Javaの標準ライブラリ(java.lang, java.util など)は、多数のクラスとインターフェースを集めたクラスライブラリです。これにより文字列操作、コレクション操作、入出力などが利用可能になります。
  • 言語ごとの違い(簡潔)
    • Java/C++/C# では「static」などのキーワードでクラス変数(共有データ)を定義する。Pythonではクラス属性として定義することでクラス全体で共有される。
  • コード例(Java)
// クラス定義の例
public class Person {
    // クラス変数(共有)
    public static int population = 0;
    // インスタンス変数(個別)
    private String name;

    public Person(String name) {
        this.name = name;
        population++;
    }

    // メソッド(振る舞い)
    public String getName() {
        return name;
    }
}
  • 上の例で population はクラス全体で共有され、name は各インスタンス固有のデータです。

FAQ

Q: クラスライブラリとフレームワークの違いは何ですか?
A: クラスライブラリは再利用可能なクラス群(道具箱)で、呼び出し側が主導して利用する。一方フレームワークは骨組みを提供し、開発者のコードがフレームワークに組み込まれる(制御の逆転が起きる)。
Q: 継承で親クラスのプライベートメンバは子クラスから見える?
A: 直接は見えません。プライベートメンバは親クラス内部でのみアクセス可能です。子クラスはpublic/protectedのメンバやアクセサ(getter/setter)を通じて利用します。
Q: クラスは複数の親クラスを持てる?
A: 言語依存です。C++は多重継承をサポートしますが、Javaはクラスの多重継承をサポートせず(インターフェースは複数実装可)、C#も基本的には単一継承です。

関連キーワード: クラス, クラスライブラリ, インスタンス変数, クラス変数, メソッド, 継承, スーパクラス, サブクラス, オブジェクト指向, static, 再利用性
← 前の問題へこの年度をクイズで解く次の問題へ →
戦国ITクイズ機能

\ せっかくなら /

応用情報技術者
クイズ形式で学習しませんか?

クイズ画面へ遷移する

すぐに利用可能!

©︎2026 情報処理技術者試験対策アプリ

このサイトについてブログプライバシーポリシー利用規約特商法表記開発者について