mühürlü bir özellik mühürlü bir sınıfla aynı mıdır?
Gidebildiği kadarıyla sealed, evet. Elbette traitve arasındaki normal farkları paylaşırlar class.
Ya da değilse, farklar nelerdir?
Farazi.
Kapalı bir özelliği kullanmak ne zaman iyi bir fikirdir (ve değil)?
Eğer varsa sealed class X, o zaman Xalt sınıfların yanı sıra kontrol etmeniz gerekir . Aynı şey sealed abstract class Xveya için de geçerli değildir sealed trait X. Yani yapabilirsin sealed abstract class X, ama bu sadece traitve az avantaj için çok daha ayrıntılı .
abstract classOver a kullanmanın ana avantajı, traitparametreleri alabilmesidir. Bu avantaj özellikle tip sınıflarını kullanırken önemlidir. Diyelim ki sıralı bir ağaç inşa etmek istiyorsunuz. Bunu yazabilirsiniz:
sealed abstract class Tree[T : Ordering]
ama bunu yapamazsın:
sealed trait Tree[T : Ordering]
çünkü bağlam sınırları (ve görünüm sınırları) örtük parametrelerle uygulanır. Özelliklerin parametre alamadığı göz önüne alındığında, bunu yapamazsınız.
Şahsen, sealed traitbelirli bir sebep beni kullanmazsa tercih ederim ve kullanıyorum sealed abstract class. Ve ince nedenlerden bahsetmiyorum, ama tip sınıflarını kullanmak gibi görmezden gelemediğiniz yüz yüze nedenler.