Mühürlü Türleri Tanımlama
Bir türü kimlerin genişletebileceğini kısıtlayın
Mühürlü Türleri Tanımlama, CoddyKit'te ücretsiz bir Java Academy dersidir. Bu, 4 dersinin 1. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Java Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Java Academy kursu toplamda 4 dersten oluşur.
Mühürlü Türler Nedir
mühürlü bir sınıf veya arayüz, başka hangi türlerin onu genişletebileceğini ya da uygulayabileceğini kısıtlar. Bu sayede derleyicinin üzerinde akıl yürütebileceği kapalı bir olasılıklar kümesi modelleyebilirsiniz.
Çözdüğü Sorun
Normal bir public sınıfı herkes, her yerde alt sınıflara ayırabilir. Bazen hiçbir sürpriz olmadan tam olarak üç şekil veya iki ödeme türü istersiniz. Mühürleme, bu amacı açık ve zorunlu hâle getirir.
Mühürlü Anahtar Sözcüğü
Bir türü sealed olarak işaretleyin ve izin verilen alt türleri permits ile listeleyin. İzin verilen her alt tür, kendi kalıtım değiştiricisini bildirmelidir.
public class Main {
sealed interface Shape permits Circle, Square {}
record Circle(double radius) implements Shape {}
record Square(double side) implements Shape {}
public static void main(String[] args) {
Shape s = new Circle(2.0);
System.out.println(s);
}
}Alt Tür Değiştiricileri
İzin verilen her alt tür şunlardan biri olmalıdır: final (daha fazla alt sınıflandırmaya izin vermez), sealed (kısıtlamayı sürdürür) veya non-sealed (serbest genişletme için yeniden açar). Kayıtlar örtük olarak final olur.
Son Alt Sınıf
Bir alt sınıfı final olarak işaretlemek, hiyerarşiyi o dalda kapatır.
public class Main {
sealed interface Animal permits Dog, Cat {}
static final class Dog implements Animal {
public String toString() { return "Dog"; }
}
static final class Cat implements Animal {
public String toString() { return "Cat"; }
}
public static void main(String[] args) {
Animal a = new Dog();
System.out.println(a);
}
}Mühürsüz Alt Sınıf
non-sealed bir alt tür, genişletmeye kasıtlı olarak yeniden izin verir ve bilinmeyen sınıfların onu tekrar genişletmesini sağlar. Yalnızca bir dalın açık kalması gerektiğinde bunu ölçülü biçimde kullanın.
public class Main {
sealed interface Plugin permits CorePlugin, ExternalPlugin {}
static final class CorePlugin implements Plugin {}
static non-sealed class ExternalPlugin implements Plugin {}
static class ThirdParty extends ExternalPlugin {}
public static void main(String[] args) {
Plugin p = new ThirdParty();
System.out.println(p.getClass().getSimpleName());
}
}Sınıflar da Mühürlü
Mühürleme yalnızca arayüzlerle sınırlı değildir. abstract sealed class da aynı şekilde çalışır ve ortak durum ile davranış barındırabilir.
public class Main {
sealed static abstract class Expr permits Num, Add {}
static final class Num extends Expr {
final int value;
Num(int value) { this.value = value; }
}
static final class Add extends Expr {
final Expr left, right;
Add(Expr left, Expr right) { this.left = left; this.right = right; }
}
public static void main(String[] args) {
Expr e = new Add(new Num(1), new Num(2));
System.out.println(e.getClass().getSimpleName());
}
}Aynı Modül veya Paket
İzin verilen alt türler, mühürlü türle aynı modülde veya kod modüler değilse aynı pakette bulunmalıdır. Bu, kapalı kümenin bir arada tutulmasını ve doğrulanabilmesini sağlar.
Derleyici Denetimi
Bir sınıf, permits içinde listelenmeden mühürlü bir türü genişletmeye çalışırsa kod derlenmez. Kapalı küme derleme zamanında güvence altına alınır.
Neden Önemlidir
Derleyici her alt türü bildiği için mühürlü tür üzerindeki bir seçim yapısının bütün durumları ele aldığını doğrulayabilir. Bu, daha sonraki bir kursta ele alınacak eksiksiz örüntü eşleştirmenin temelidir.
Eksiksiz Bir Hiyerarşi
Burada, değer modeli olarak kullanılan küçük ve kapalı bir hiyerarşi yer alıyor.
public class Main {
sealed interface Json permits JsonNull, JsonNumber, JsonString {}
record JsonNull() implements Json {}
record JsonNumber(double value) implements Json {}
record JsonString(String value) implements Json {}
public static void main(String[] args) {
Json[] values = { new JsonNull(), new JsonNumber(3.5), new JsonString("hi") };
for (Json j : values) {
System.out.println(j);
}
}
}Kısa Kontrol
Mühürlü bildirimler konusundaki anlayışınızı sınayın.
Özet
Mühürlü türleri bildirmeyi öğrendiniz.
sealed, bir türü kimlerin genişletebileceğini veya uygulayabileceğini kısıtlar.permitsyan tümcesi izin verilen alt türleri listeler.- Her alt tür
final,sealedveyanon-sealedolmalıdır. - Alt türler aynı modül veya pakette bulunur ve derleyici tarafından denetlenir.
Sıkça Sorulan Sorular
“Mühürlü Türleri Tanımlama” dersi ücretsiz mi?
Evet — “Mühürlü Türleri Tanımlama” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Java Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Java Academy kursu toplamda 4 dersten oluşur.
“Mühürlü Türleri Tanımlama” dersinde ne öğreneceğim?
Bir türü kimlerin genişletebileceğini kısıtlayın Java Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
Java Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Java Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 1. dersidir.
“Mühürlü Türleri Tanımlama” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu Java Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Java Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Mühürlü Türleri Tanımlama
- permits Yan Tümcesi
- Record'larla Mühürlü Türler
- Mühürlü Türlerde Eksiksiz switch