Open In App

Extending a Class in Scala

Improve
Improve
Like Article
Like
Save
Share
Report

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 derived_class_name extends base_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 object
    object 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 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(); 
        

    
    

    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 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);
        }
    }

    
    

    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.



    Last Updated : 23 Jun, 2023
    Like Article
    Save Article
    Previous
    Next
    Share your thoughts in the comments
Similar Reads