ivar を使用することと、実装内で変数を宣言することの違いは、実装内の変数がファイル スコープであり、グローバルであることです。つまり、すべてのインスタンス (およびすべての静的メソッド) が同じ変数を共有します。つまり、オブジェクトの 1 つのインスタンスが変数を変更すると、すべてのインスタンスで変数が変更されます。
ファイル スコープで定義するユース ケースは、静的メソッド (クラスのインスタンスではなく、クラスに対して直接作用するメソッド) の格納です。これの非常に一般的な使用例は、Singleton デザイン パターンです。このファイル内でクラスの静的インスタンスを定義して、いつでも同じインスタンスにアクセスしていることを確認できます。このインスタンスを返す静的メソッドを提供して、コード内の任意のオブジェクトがクラスでメソッドを直接呼び出すことによって同じオブジェクトにアクセスできるようにすることができます。
2014 年 4 月 17 日更新
現在の一般的な方法は、Propertiesを使用することです。これにより、ゲッターとセッターが自動的に作成され、クラスがより拡張可能になります (プロパティの動作方法を変更することにした場合、おそらくその場で常に計算されるように変更したい場合、クラスのパブリック インターフェイスを変更する必要はありません)。 )。
プライベート クラス拡張を使用して、「プライベート」プロパティとメソッドを宣言できます。これには、特定のプロパティとメソッドが外部クラスからアクセスされないように保護する効果があります。