C#
 Computer >> コンピューター >  >> プログラミング >> C#

C#のオブジェクトとクラスの違いとは?基本概念と使い方を実例で解説

C#におけるクラスとオブジェクトの基本的な違い

C#はJavaと同様にオブジェクト指向プログラミング言語であり、「クラス」と「オブジェクト」という2つの重要な概念を持っています。

クラスは、データ(フィールド)と処理(メソッド)をひとまとめにした「設計図」や「テンプレート」のようなものです。一方、オブジェクトは、そのクラスをもとに実際に生成された「実体(インスタンス)」を指し、現実世界のモノや概念をプログラム上で表現します。

つまり、クラスはあくまで定義であり、それ自体はメモリ上に実体を持ちません。newキーワードを使ってインスタンス化することで、初めて操作可能なオブジェクトが生成されます。

ドット演算子によるクラスメンバーへのアクセス

クラスのメンバー(フィールドやメソッド)にアクセスするには、オブジェクト名の後にドット(.)演算子を使用します。ドット演算子は、オブジェクト名とメンバー名を結び付ける役割を果たします。

まず、以下のようにBoxクラスのオブジェクトを生成します。

Box Box1 = new Box();

ここで、Box1がオブジェクト(インスタンス)です。このBox1を使って、クラスのメンバーへアクセスしていきます。

例えば、heightフィールドに値を代入する場合は次のように記述します。

Box1.height = 3.0;

同様に、メンバー関数(メソッド)を呼び出すこともできます。

Box1.getVolume();

C#におけるクラスとオブジェクトの使用例

次のサンプルコードは、C#でクラスとオブジェクトがどのように動作するかを示したものです。Boxクラスを定義し、そこから2つのオブジェクトを生成して、それぞれの体積を計算しています。

サンプルコード

using System;

namespace BoxApplication {
    class Box {
        private double length;   // 箱の長さ
        private double breadth;  // 箱の幅
        private double height;   // 箱の高さ

        public void setLength( double len ) {
            length = len;
        }

        public void setBreadth( double bre ) {
            breadth = bre;
        }

        public void setHeight( double hei ) {
            height = hei;
        }

        public double getVolume() {
            return length * breadth * height;
        }
    }

    class Boxtester {
        static void Main(string[] args) {
            // 2つのオブジェクトを生成
            Box Box1 = new Box(); // Box型のBox1を宣言
            Box Box2 = new Box();
            double volume;

            // オブジェクトを使ってメンバー関数を呼び出す
            Box1.setLength(6.0);
            Box1.setBreadth(7.0);
            Box1.setHeight(5.0);

            // Box2の寸法を設定
            Box2.setLength(12.0);
            Box2.setBreadth(13.0);
            Box2.setHeight(10.0);

            // Box1の体積を取得して表示
            volume = Box1.getVolume();
            Console.WriteLine("Volume of Box1 : {0}", volume);

            // Box2の体積を取得して表示
            volume = Box2.getVolume();
            Console.WriteLine("Volume of Box2 : {0}", volume);

            Console.ReadKey();
        }
    }
}

実行結果

Volume of Box1 : 210
Volume of Box2 : 1560

まとめ

クラスはオブジェクトの設計図であり、オブジェクトはその設計図から生成された実体です。1つのクラスから複数のオブジェクトを生成でき、それぞれが独立した状態(フィールドの値)を持ちます。上記の例でも、同じBoxクラスから生成されたBox1とBox2が、異なる寸法と体積(210と1560)を持っていることが確認できます。この「クラス=定義、オブジェクト=実体」という関係こそが、C#における両者の本質的な違いです。

  1. C#のクラスとオブジェクトの違いとは?基本概念とサンプルコードでわかりやすく解説

    クラスとオブジェクトの基本的な違いC#におけるクラスとは、あるデータ型の設計図(ブループリント)を定義するものです。クラス自体はあくまで「型」の定義であり、それ単体ではメモリ上に実体を持ちません。一方、オブジェクトは、そのクラスをもとに生成された実体(インスタンス)を指します。クラスを構成するメソッドや変数は、まとめて「クラスのメンバー」と呼ばれます。ドット演算子でメンバーにアクセスするクラスのメンバーにアクセスするには、オブジェクト名の後にドット(.)演算子を付けます。ドット演算子は、オブジェクト名とメンバー名をつなぐ役割を果たします。まず、newキーワードを使ってクラスからオブジェクトを生

  2. TkinterのTkクラスとToplevelクラスの違いとは?使い分けをわかりやすく解説

    Tkinterアプリケーションでは、まずTkオブジェクトを初期化することでウィンドウが作成されます。TkはあらゆるTkinterアプリケーションに不可欠な最小構成要素であり、アプリケーションをインスタンス化する役割を担います。すべてのウィジェットが配置されるメインウィンドウなど、アプリケーションの基本的な土台を構築するのがTkです。 一方、Toplevelクラスは、メインアプリケーションの内部ウィジェットと連携しながら動作します。代表例がToplevelウィンドウで、アプリケーションのメインウィンドウとは別に子ウィンドウを表示するために使用されます。ToplevelウィンドウはTkと同様に機能