Scala | Auxiliary Constructor

Constructors are used to initializing the object’s state. Like methods, a constructor also contains a collection of statements (i.e. instructions). Statements are executed at the time of object creation. In Scala Program, the constructors other than the primary constructor are known as Axiliary Constructors. We are allowed to create any number of auxiliary constructors in our Scala class, but a scala class contains only one primary constructor.

Auxiliary constructors are defined as methods in the class with the keyword this. We can describe multiple auxiliary constructors, but they must have different parameter lists.

Syntax :

def this(......)

Let’s try to understand Auxiliary constructors with help of some examples.

Example #1: Using one Auxiliary Constructor

filter_none

edit
close

play_arrow

link
brightness_4
code

// Scala program to illustrate the 
// concept of Auxiliary Constructor 
  
// Primary constructor 
class GFG( Lname: String, Tname: String) 
    var no: Int = 0;; 
    def show() 
    
        println("Language name: " + Lname); 
        println("Topic name: " + Tname); 
        println("Total number of articles: " + no); 
          
    
      
    // Auxiliary Constructor 
    def this(Lname: String, Tname: String, no:Int) 
    
          
        // Invoking primary constructor 
        this(Lname, Tname) 
        this.no = no 
    
  
// Creating object
object Main 
    // Main method
    def main(args: Array[String]) 
    
          
        // Creating object of GFG class 
        var obj = new GFG("Scala", "Constructor", 4); 
        obj.show(); 
    

chevron_right


Output:

Language name: Scala
Topic name: Constructor
Total number of articles: 4

In above example, as we can see only one auxiliary constructor is used and primary constructor invoked in that auxiliary constructor. After creating object of GFG class(obj), show() function will be called and print the result.
 
Example #2: Using more than one Auxiliary Constructor.

filter_none

edit
close

play_arrow

link
brightness_4
code

// Scala program to illustrate the 
// concept of more than concept
// Auxiliary Constructor 
  
// Primary constructor 
class Company 
{
    private var Cname = ""
    private var Employee = 0
    
    // Creating function
    def show() 
    
        println("Language name: " + Cname); 
        println("Total number of employee: " + Employee); 
    }
  
    // An auxiliary constructor
    def this(Cname: String)
    
        // Calls primary constructor
        this() 
        this.Cname = Cname
    }
  
    // Another auxiliary constructor
    def this(Cname: String, Employee: Int) 
    
          // Calls previous auxiliary constructor
        this(Cname) 
        this.Employee = Employee
    }
}
  
// Creating object
object Main 
    // Main method
    def main(args: Array[String]) 
    
        // Primary constructor
        val c1 = new Company 
        c1.show()
          
        // First auxiliary constructor
        val c2 = new Company("GeeksForGeeks"
        c2.show()
          
        // Second auxiliary constructor
        val c3 = new Company("GeeksForGeeks", 42
        c3.show()
          
    

chevron_right


Output:

Language name: 
Total number of employee: 0
Language name: GeeksForGeeks
Total number of employee: 0
Language name: GeeksForGeeks
Total number of employee: 42

In above example, as we can see two auxiliary constructors are created with different parameters. Auxiliary constructor invoked primary constructor and another auxiliary constructor invoked previously defined auxiliary constructor.

Some Important Points About Auxiliary Constructor

  • In a single class, we are allowed to create one or more than one auxiliary constructors, but they have different signatures or parameter-lists.
  • Each auxiliary constructor must call one of the previously defined constructors, this would be primary constructor or previous auxiliary constructor.
  • The invoke constructor may be a primary or previous auxiliary constructor that comes textually before the calling constructor.
  • The first statement of the auxiliary constructor must contain this keyword.


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.