佐々木屋

技術的なことから趣味まで色々書きます

クラスを考える⑥(呼び出し)

自作クラスを作ったわけですが、通常クラスの場合と静的クラスの場合で呼び出し方が少し異なります。

通常のクラス

通常のクラスはそのクラス専用にインスタンスを作成する必要がある為、newを使います。
以前作成したたい焼きクラスを使ってみます。

public class たい焼き {  
    public string 中身 { get; set; } = "あんこ";
    public int 焼く時間 { get; set; } = 5;

    public bool 焼きます() {
        try {
            //中身、焼く時間を使って焼く処理を記述
            return true;
        }
        catch {
            return false;
        }
    }
}
Public Class たい焼き
    Public Property 中身 As String = "あんこ"
    Public Property 焼く時間 As Integer = 5

    Public Function 焼きます() As Boolean
        Try
            '中身、焼く時間を使って焼く処理を記述
            Return True
        Catch
            Return False
        End Try
    End Function
End Class



クラス名に対してnewすればインスタンスを作成することが可能です。
その後はそのインスタンスを使用すればクラスメンバーやメソッドへアクセスできます。

public static void Main() {
    たい焼き taiyaki = new たい焼き();
    taiyaki.中身 = "クリーム";
    if (taiyaki.焼きます()) {
        Console.WriteLine("成功!");
    }
    else {
        Console.WriteLine("失敗!");
    }
}
Public Sub Main()
    Dim taiyaki As New たい焼き()
    taiyaki.中身 = "クリーム"
    If taiyaki.焼きます() Then
        Console.WriteLine("成功!")
    Else
        Console.WriteLine("失敗!")
    End If
End Sub



静的なクラス

静的クラスの場合はインスタンスを作成する必要がありませんので、つまりnewする必要がありません。(アクセス修飾子が正しければ)そのままクラス名を記述すれば勝手に使えてしまいます。

例えば以下のような静的クラスを作成したとします。

public static class 生地を作る静的クラス {
    public static void 生地作るよ() {
        //何かの処理
    }
}
public static void Main() {
    生地を作る静的クラス.生地作るよ();
}



しかし、これだとクラス名+メソッド名なので、クラス名が長いととてつもなく可読性の悪いコードとなってしまいます。
それを解決する方法として、usingディレクティブ(VB.NETの場合はImportsステートメント)を宣言します。これらを宣言することで、静的クラスを任意の略称で呼び出すことが可能となります。例えば、「生地を作る静的クラス」を「ki」という略称を宣言して使用してみます。

using ki = 生地を作る静的クラス;
public static void Main() {
    ki.生地作るよ();
}
Imports ki = 生地を作る静的クラス
Public Sub Main()
    ki.生地作るよ()
End Sub



当然ながら予約語は使用できませんので、分かりやすい・短い・適当な名前を付けるとよいでしょう。