Thursday, 27 August 2020

Class, Object, Companion Object, Companion Class in Scala with Examples

class AreaOfSquare {  // class
  var lengthOftheSide = 10;

  private var msg = "Welcome"
  private def displayMessage() = {
    println("Message : " + msg)
  }

 def area(): Unit = {
    {
      var ar = lengthOftheSide * lengthOftheSide
      println("Length : " + lengthOftheSide)
      print ("Area Of Square : "+ar)
    }
  }
}

object AreaOfSquare {  // object
  var lengthOftheSide = 10;

  private var msg = "Welcome"
  private def displayMessage() = {
    println("Message : " + msg)
  }

  def area(): Unit =
  {
    var ar = lengthOftheSide * lengthOftheSide
    println("Length : " + lengthOftheSide)
    print ("Area Of Square : "+ar)
  }

}

class my1st { // companion class
  var lengthOftheSide = 10;

  private var msg = ""
  private def displayMessage() = {
    println("Message : " + msg)
  }

  def area(): Unit = {
    {
      var ar = lengthOftheSide * lengthOftheSide
      println("Length : " + lengthOftheSide)
      print ("Area Of Square : "+ar)
    }

  }

}

object my1st {
  def main(args:Array[String]) : Unit = {
    var obj = new AreaOfSquare() /*Creating instance of the class*/
    obj.lengthOftheSide = 15
    // obj.msg = "Something" // inaccessible because the variable is declared as private
    // obj.displayMessage()  // inaccessible because the variable is declared as private
    obj.area()

    println()

    AreaOfSquare.lengthOftheSide = 11 // Simply calling the object - static equivalent - no need to instantiate*/
    //  AreaOfSquare.msg = "Something"  // inaccessible because the variable is declared as private
   // AreaOfSquare.displayMessage() // inaccessible because the variable is declared as private
    AreaOfSquare.area()

    println()

    var myobj = new my1st() // object name = class name --> companion object, class

    /* Companion object : class and object where we calling the class name both are same
    * A companion object is allowed to access both private methods and private fields of the class.*/
    myobj.lengthOftheSide = 8
    myobj.area()

    myobj.msg = "Welcome to Companion Objects and Class" // companion object can access private fields and methods
    myobj.displayMessage() // companion object can access private fields and methods
  }
}


Result : 
Length : 15
Area Of Square : 225
Length : 11
Area Of Square : 121
Length : 8
Area Of Square : 64Message : Welcome to Companion Objects and Class

No comments:

Post a Comment

Flume - Simple Demo

// create a folder in hdfs : $ hdfs dfs -mkdir /user/flumeExa // Create a shell script which generates : Hadoop in real world <n>...