この質問にはすでに答えがあります。
Java(そしてAndroid)では、何を使うのですかstatic class
そしてfinal class
宣言?
私の質問は静的インスタンスではなく、クラス宣言です
static class StaticClass {
//variables and methods
}
そして
final class FinalClass {
//variables and methods
}
ありがとう、
静的な入れ子クラス
クラスメソッドや変数と同様に、静的ネストクラスはその外部クラスに関連付けられています。また、静的クラスメソッドと同様に、静的入れ子クラスは、それを囲むクラスで定義されているインスタンス変数またはメソッドを直接参照することはできません。オブジェクト参照を介してのみ使用できます。 注:静的ネストクラスは、他の最上位クラスと同じように、その外部クラス(および他のクラス)のインスタンスメンバーと対話します。実際には、静的なネストクラスは、パッケージ化の便宜上、別の最上位クラスにネストされている動作上、最上位クラスです。
静的な入れ子クラスは、それを囲むクラス名を使ってアクセスされます。
OuterClass.StaticNestedClass
たとえば、静的ネストクラスのオブジェクトを作成するには、次の構文を使用します。
OuterClass.StaticNestedClass nestedObject =
new OuterClass.StaticNestedClass();
http://docs.oracle.com/javase/tutorial/java/javaOO/nested.html
最終クラス
finalと宣言されたクラスはサブクラス化できません。これは、たとえばStringクラスのような不変クラスを作成するときに特に便利です。
http://docs.oracle.com/javase/tutorial/java/IandI/final.html
あなたはそれが拡張されることができないようにあなたがクラスをファイナルにする。通常、ライブラリを作成している(または大きなプロジェクトの一部で作業している)場合は意味があります。そのため、クライアントはクラスを拡張して既存の動作を変更することはできません。あなた自身のプログラムでは、それが大きなプログラムで、偶然に物事を忘れることができないのでなければ、クラスを決勝にする理由はほとんどありません。
静的内部クラスは、論理的には外部(包含)クラスに属しているが、外部クラスの状態には依存しないもののためのものです。たとえば、Parserクラスと内側のParser.Listenerクラスがあります。通常、内部クラスを持つことにした場合、まず可能であれば、単純にするためにそれを静的にするようにしてください。
あなたはfinalとstaticの両方の内部クラスを使わずにそれを行うことができるでしょう。
他のクラスは最終クラスを拡張できません。例文字列は最終クラスなので、このクラスを拡張することはできません。 最上位クラスをstaticとして宣言することはできません。修飾子 'static'を持つ内部クラスしか持てません。 静的内部クラスは外部クラスの静的メンバーにのみアクセスします
もしあなたがクラスをfinalクラスにするならば、それは継承できません。一般的に最上位クラスは静的にすることはできませんが、内部クラスは静的にすることができ、入れ子の静的クラスはOuterクラスの参照を必要としません。静的そして最後のjavaのクラス
あなたはクラスを静的にマークすることはできませんか? はい、それがネストクラスであれば 普通のクラスであれば、いいえ。 入れ子になったクラスを静的とマークした場合、それは完全にフラグが立てられたクラスとして機能し、それにアクセスするには単にclassname.staticClassNmaeを使用します。
あなたがクラスの決勝にマークを付けるならば、それは継承されることができません、これの良い例ひもjavaのクラス。