Trait बनाम Abstract Class
In this page:
Trait vs Abstract Class
जब आपको constructor parameters चाहिए हों या एक सख्त single-inheritance "is-a" hierarchy model कर रहे हों तो abstract class चुनें; जब आप कई, अन्यथा असंबंधित classes में reusable behavior mix करना चाहते हों तो trait चुनें।
एक class सिर्फ एक abstract class को extend कर सकती है लेकिन किसी भी संख्या में traits mix in कर सकती है। आधुनिक Scala में, behavior share करने के लिए traits ज़्यादा आम tool हैं, और abstract classes को specifically constructor parameters या Java interop की ज़रूरत वाले मामलों के लिए रखा गया है।
उदाहरण: Trait vs Abstract Class
abstract class Vehicle(val wheels: Int)
trait Honkable {
def honk(): Unit = println("Honk!")
}
class Car(wheels: Int) extends Vehicle(wheels) with Honkable
object Main extends App {
val car = new Car(4)
println(car.wheels)
car.honk()
}
Login to try C/C++/Java/PHP code in the editor
- किसी abstract class का उपयोग करना जब type को कई parents चाहिए हों, जबकि एक class सिर्फ एक को extend कर सकती है।
- किसी trait को constructor parameters देना, जिसकी Scala 2 अनुमति नहीं देता और Scala 3 सिर्फ सीमित तरीके से अनुमति देता है।
Vehicleजैसे सख्त "is-a" संबंध वाली किसी चीज़ के लिए trait चुनना, जबकि एक class hierarchy इसे बेहतर तरीके से बताती है।
Chapter Quiz — Complete all 7 topics to unlock
0/7 topics done
Complete these topics first: