staticメソッドしか持たないクラス

PHPJavaで、staticメソッドしか持たないクラスを作るとき(例えばJavaのMathクラスのようなクラス)には、そのクラスのインスタンスが生成できないようにする必要がある(staticメソッドにインスタンス経由でメソッドにアクセスするのは明らかに無駄だ。だから、staticメソッドしか持たないクラスのインスタンスを生成する必要がない。無駄なことはできないようにした方が安全だ)。


インスタンスを生成できないクラスを作るためには、次のようにコンストラクタをprivateで定義すればいい。


PHP

<?php
class TestClass {
    // コンストラクタをprivateで定義することで、インスタンスの生成を防ぐ。
    private function __construct(){
    }

    // TestClassの持つstaticメソッド。
    public static function testMethod(){
    }
}
?>


Java

public class TestClass {
    // コンストラクタをprivateで定義することで、インスタンスの生成を防ぐ。
    private TestClass(){
    }

    // TestClassの持つstaticメソッド。
    public static void testMethod(){
    }
}


コンストラクタがprivateで定義されると、そのクラス外からコンストラクタを呼ぶことができなくなるので、インスタンスを生成することは不可能になる。