Java
Sealed sınıf
sealed sınıf ile kısıtlı mirası öğrenirsin.
Sealed sınıf nedir?
Bir sealed sınıf, hangi sınıfların kendisinden miras alabileceğini açıkça listeler. sealed anahtar kelimesiyle tanımlanır; permits ile izin verilen alt sınıflar belirtilir. Java 17'de standartlaştı.
Örnek: sealed class Shape permits Circle, Square { }. Burada Shape yalnızca Circle ve Square sınıflarının miras almasına izin verir. Başka bir sınıf extends Shape yazamaz; derleme hatası alır. Bu, hiyerarşiyi öngörülebilir tutar. Alt sınıflar final, sealed veya non-sealed olmalıdır. Sealed, kalıtım ağacını kapatmanın resmi yoludur. Pattern matching ile birlikte güçlüdür.
Sealed avantajı
Sealed sınıflar, kalıtım hiyerarşisini sınırlayarak kodun öngörülebilir olmasını sağlar. Derleyici, tüm alt sınıfları bildiği için pattern matching gibi özelliklerde tükenmezlik denetimi yapabilir.
Örnek: sealed class Shape permits Circle, Square tanımladıysan, bir switch ifadesinde Circle ve Square durumlarını kapsarsan derleyici tüm olasılıkların işlendiğini doğrular. Bu, eksik durumların erken yakalanmasını sağlar. Sealed olmadan, kimin Shape'i extend ettiği bilinemez; denetim mümkün olmaz. Sealed, kütüphane tasarımcılarının hiyerarşiyi korumasına da yardımcı olur. Sürüm boyunca alt sınıf listesi sabit kalır.
Uygulama Sealed Shape sınıfını tanımla
sealed class Shape permits Circle, Square { } tanımla. Sonra final class Circle extends Shape { } ve final class Square extends Shape { } yaz. main içinde bir Shape dizisi tanımla: Shape[] shapes = { new Circle(), new Square() };. for döngüsü ile her birinin sınıf adını System.out.println(s.getClass().getSimpleName()); ile yazdır.
Örnek çözümü göster
sealed class Shape permits Circle, Square {
}
final class Circle extends Shape {
}
final class Square extends Shape {
}
class Main {
public static void main(String[] args) {
Shape[] shapes = { new Circle(), new Square() };
for (Shape s : shapes) {
System.out.println(s.getClass().getSimpleName());
}
}
}
Kendini test et
-
Sealed sınıf hangi kelimeyle alt sınıfları listeler?
- extends
- implements
- permits
- with
Cevabı göster
permits — permits kelimesi alt sınıfları listeler.
-
Sealed sınıf kavramlarını eşle
- sealed
- Kısıtlı miras kelimesi
- permits
- İzin listesi kelimesi
- final
- Kapatılmış alt sınıf
- non-sealed
- Açık alt sınıf
-
permits satırını tamamla
sealed class Shape ____ Circle, Square { }
final class Circle extends Shape { }
final class Square extends Shape { }
Cevabı göster
sealed class Shape permits Circle, Square { }
final class Circle extends Shape { }
final class Square extends Shape { }
Sıradaki ders: Özet - Abstract sınıf