Extending a Class in Scala

29 Mar, 2019
Extending a class in Scala user can design an inherited class. To extend a class in Scala we use extends keyword. there are two restrictions to extend a class in Scala :
To override method in scala override keyword is required.
Only the primary constructor can pass parameters to the base constructor.
Syntax:
class base_class_name extends derived_class_name
{
    // Methods and fields
}

Example:
// Scala program of extending a class  // Base class class Geeks1{     var Name: String = "chaitanyashah"}   // Derived class // Using extends keyword class Geeks2 extends Geeks1{     var Article_no: Int = 30          // Method     def details()     {         println("Author name: " + Name);         println("Total numbers of articles: " + Article_no);     } }   // Creating objectobject GFG {           // Driver code     def main(args: Array[String])     {                   // Creating object of derived class         val ob = new Geeks2();         ob.details();     } } 
Output:
Author name: chaitanyashah
Total numbers of articles: 30

In the above example Geeks1 is the base class and Geeks2 is the derived class which is derived from Geeks1 using extends keyword. In the main method when we create the object of Geeks2 class, a copy of all the methods and fields of the base class acquires memory in this object. That is why by using the object of the derived class we can also access the members of the base class.
Example:
// Scala program of extending a class  // Base classclass Parent {     var Name1: String = "geek1"    var Name2: String = "geek2"}   // Derived from the parent class class Child1 extends Parent {     var Age: Int = 32    def details1()     {         println(" Name: " + Name1)        println(" Age: "  + Age)     } }   // Derived from Parent class class Child2 extends Parent {     var Height: Int = 164          // Method     def details2()     {         println(" Name: " + Name2)         println(" Height: " + Height)     } }   // Creating objectobject GFG {           // Driver code     def main(args: Array[String])     {                   // Creating objects of both derived classes         val ob1 = new Child1();         val ob2 = new Child2();         ob1.details1();         ob2.details2();     } } 
Output:
Name: geek1
Age: 32
Name: geek2
Height: 164

In the above example Parent is the base class Child1 and Child2 are the derived class which is derived from Parent using extends keyword. In the main method when we create the objects of Child1 and Child2 class a copy of all the methods and fields of the base class acquires memory in this object.Example:
// Scala program of extending a class  // Base classclass Bicycle (val gearVal:Int, val speedVal: Int){    // the Bicycle class has two fields    var gear: Int = gearVal   var speed: Int = speedVal        // the Bicycle class has two methods    def applyBreak(decrement: Int)   {       gear = gear - decrement       println("new gear value: " + gear);   }   def speedUp(increment: Int)   {       speed = speed + increment;       println("new speed value: " + speed);   }}  // Derived classclass MountainBike(override val gearVal: Int,                     override val speedVal: Int,                    val startHeightVal : Int)                     extends Bicycle(gearVal, speedVal){    // the MountainBike subclass adds one more field    var startHeight: Int = startHeightVal        // the MountainBike subclass adds one more method    def addHeight(newVal: Int)   {       startHeight = startHeight + newVal       println("new startHeight : " + startHeight);   }}  // Creating objectobject GFG {    // Main method    def main(args: Array[String])     {        val bike = new MountainBike(10, 20, 15);          bike.addHeight(10);        bike.speedUp(5);        bike.applyBreak(5);    }}
Output:
new startHeight : 25
new speed value: 25
new gear value: 5

In above program, when an object of MountainBike class is created, a copy of the all methods and fields of the superclass acquire memory in this object.
Picked
Scala
Scala-OOPS
Scala
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.