mühürlü bir özellik mühürlü bir sınıfla aynı mıdır?
Gidebildiği kadarıyla sealed
, evet. Elbette trait
ve 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 X
alt sınıfların yanı sıra kontrol etmeniz gerekir . Aynı şey sealed abstract class X
veya için de geçerli değildir sealed trait X
. Yani yapabilirsin sealed abstract class X
, ama bu sadece trait
ve az avantaj için çok daha ayrıntılı .
abstract class
Over a kullanmanın ana avantajı, trait
parametreleri 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 trait
belirli 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.