Extending a Class in Scala

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:

    filter_none

    edit
    close

    play_arrow

    link
    brightness_4
    code

    // 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 object
    object GFG 
          
        // Driver code 
        def main(args: Array[String]) 
        
              
            // Creating object of derived class 
            val ob = new Geeks2(); 
            ob.details(); 
        

    chevron_right

    
    

    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:

    filter_none

    edit
    close

    play_arrow

    link
    brightness_4
    code

    // Scala program of extending a class
      
    // Base class
    class 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 object
    object 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(); 
        

    chevron_right

    
    

    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:

    filter_none

    edit
    close

    play_arrow

    link
    brightness_4
    code

    // Scala program of extending a class
      
    // Base class
    class 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 class
    class 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 object
    object GFG 
    {
        // Main method
        def main(args: Array[String]) 
        {
            val bike = new MountainBike(10, 20, 15);
      
            bike.addHeight(10);
            bike.speedUp(5);
            bike.applyBreak(5);
        }
    }

    chevron_right

    
    

    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.



    My Personal Notes arrow_drop_up

    Check out this Author's contributed articles.

    If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

    Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.




    Article Tags :

    Be the First to upvote.


    Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.