静的クラス(Static Class)
静的クラスは、static修飾子で宣言される内部クラスのことを指します。
静的クラスは、静的メンバ(静的フィールドや静的メソッド)を含むことができ、外部クラスのインスタンスを作成せずに直接アクセスすることができます。
静的クラスは、外部クラスに関連するが外部クラスのインスタンスに依存しない機能をカプセル化するために使用されます。
静的クラスは、フィールドやメソッド、コンストラクタを通常のクラスと同じように定義することができます。
オブジェクトインスタンスを作成する必要なく、クラス名で直接アクセスすることができます。
静的クラスの例
public class OuterClass {
// 外部クラスの他のメンバ
public static class StaticNestedClass {
// 静的内部クラスのメンバ
}
// 外部クラスの他のメンバ
}
OuterClass.StaticNestedClass
を使用して、静的内部クラスに直接アクセスすることができます。
抽象クラス(Abstract Class)
抽象クラスは、abstract
キーワードで宣言されるクラスです。抽象クラスはインスタンス化することはできず、他のクラスの基底クラスとしてのみ使用されます。
抽象クラスには、抽象メソッドと非抽象メソッドが含まれることができます。抽象メソッドは実装されていないメソッドであり、具体的な実装は抽象クラスを継承するサブクラスによって提供されます。
非抽象メソッドは実装されたメソッドであり、直接抽象クラス内に定義することができます。抽象クラスは、一般的な基底クラスを提供し、共通の振る舞いを定義し、具体的なサブクラスが実装と拡張を行うために使用されます。
抽象クラスの例
public abstract class AbstractClass {
// 抽象クラスのメンバ
public abstract void abstractMethod();
public void nonAbstractMethod() {
// 非抽象メソッドの実装
}
}
注意点として、クラスに1つ以上の抽象メソッドが含まれる場合、そのクラスは抽象クラスとして宣言する必要があります。
抽象クラスは直接インスタンス化することはできませんが、それを継承する具体的なサブクラスを介してオブジェクトを作成することができます。
まとめ
静的クラスは特殊な内部クラスであり、抽象クラスは特殊なクラスです。静的クラスは、外部クラスのインスタンスに依存しない独立した機能をカプセル化するために使用されます。
一方、抽象クラスは他のクラスの基底クラスとして使用され、一般的な抽象的な定義を提供し、サブクラスに抽象メソッドの実装を要求します。
コメント