C#初心者のための基礎!クラスの意味と使い方をわかりやすく解説#16

当サイトではアフィリエイト広告を利用しています。

クラスとは?

クラスとは「データ」と「処理」のひと固まりです。現実社会をデータと処理に分けていき、意味のあるひと固まりを「クラス」というものに定義します。

クラスがあると何がいいの?

オブジェクト指向言語はクラスとインスタンスという概念があります。クラスは定義、インスタンスは実態です。クラスという枠組みを作成し、実際のデータはインスタンスという実態を生成したときに作り出されるという考え方です。この考え方のおかげで、例えば顧客というクラスを定義し、「小野さん」「稲本さん」というデータを含んだインスタンスを同じ定義で量産することができます。

クラスの書き方

アクセス修飾子、classキーワード、任意のクラス名{}

アクセス修飾子

アクセス修飾子は、public ,internal,private等です。通常はpublicかinternalで宣言します。異なるプロジェクトからも呼び出される可能性がない場合はinternalで宣言してください。そのほうが、外部から参照されていないことが保証され、改造するときに考慮する対象が減ります。

sealedキーワード

アクセス修飾子とclassキーワードの間にsealedキーワードを書くことができます。これは継承を禁止するキーワードになります。このクラスを継承させる予定がない場合はsealedキーワードを記述しましょう。通常は継承関係にするケースは限られていると思うので、クラスを新規で作成する場合は必ずsealedキーワードを付けて置き、継承する必要性が出てきたタイミングでsealedキーワードを削除するという運用がよいです。このクラスが誰にも継承されていないと保証されているほうが、プログラムの保守性が高まります。

任意のクラス名

クラス名は何を付けても構いませんが、そのクラスの意味が連想できるものにする必要があります。顧客クラスなのに「A1」などというクラス名は適していません。プログラムというのは、自分だけではなく、他人が見てもわかりやすいものにしておく必要があります。また、毎日プログラミングをしていると、数か月前の自分の実装ですら忘れていたりするので、未来の自分のためにも、わかりやすい名前を付けましょう。わかりやすい名前を付けるコツは、特に考えすぎずに、シンプルに日本語をそのまま英語にした単語でクラス名にするのがよいでしょう。クラス名の頭文字は大文字にします。

クラスとは雛形である

クラスとは定義であり、雛形のようなものです。実際のデータがありません。例えば顧客IDという変数がクラスに宣言されていても、それだけでは意味を持っていません。顧客IDに「123」などと値を吹き込んで初めてデータとして成り立ちます。そのデータを吹き込むことをインスタンスと呼んでいます。このクラスとインスタンスという考え方により、クラスを定義して、インスタンスを量産するということが実現できます。

インスタンスの生成

クラスは定義しただけでは意味がありません。インスタンスを生成することで初めて使用することができます。クラスを使用するときはnewキーワードでインスタンスを生成する必要があります。

インスタンス生成の書き方

クラス名、任意の変数名、イコール、newキーワード(引数);

namespace CS16
{
    ///
    /// 顧客
    /// 
    class Customer
    {
    //注意:あえてカプセル化をしていません。
        public string FirstName;
        public string LastName;

        public string GetFullName()
        {
            return LastName + FirstName;
        }
    }
}

顧客を表すCustomerクラスです。顧客情報に関する変数やメソッドを定義します。

namespace CS16
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            //Customerクラスをnewキーワードで生成して、値を設定している
            var customer = new Customer();
            customer.LastName = "小野";
            customer.FirstName = "伸一";

            MessageBox.Show(customer.GetFullName());
        }
    }
}

Customerクラスを使っているForm1クラスです。Newキーワードを使ってCustomerクラスのインスタンスを生成し、その後にデータを設定しています。