HOWTO · Scala

Scala에서 클래스 확장

이 기사에서는 Scala의 클래스 확장에 대해 설명합니다.

이번 글에서는 스칼라에서 클래스를 확장하는 방법에 대해 알아보겠습니다.

Scala에서 클래스 확장

Scala에서는 개체 지향 프로그래밍(OOP)의 가장 중요한 부분 중 하나인 상속을 달성하기 위해 클래스를 확장합니다. Scala에서 클래스를 확장하려면 extend 키워드를 사용해야 합니다.

통사론:

derived_class_name extends base_class_name
{

}

더 잘 이해하기 위해 예를 살펴보겠습니다.

예제 코드:

class Parent
{
    var child1: String = "Tony"
    var child2: String = "Nat"

}

class childOne extends Parent
{
    var age = 23
    var gender = "Male"

    def display()
    {
        println("Name : " +child1)
        println("Age : "+age)
        println("Gender : "+gender)
    }



}

class childTwo extends Parent
{
    var age = 18
    var gender = "Female"

    def display()
    {
        println("Name : " +child2)
        println("Age : "+age)
        println("Gender : "+gender)
    }



}


object myClass{

    def main(args: Array[String])
    {
     val obj1 = new childOne()
     val obj2 = new childTwo()

     obj1.display()
     obj2.display()


    }
}

출력:

Name : Tony
Age : 23
Gender : Male
Name : Nat
Age : 18
Gender : Female

위의 코드에서 클래스 childOnechildTwo 클래스가 기본 클래스 parent에서 상속된 데이터를 관찰할 수 있습니다.

Scala에서 케이스 클래스 확장

Scala의 케이스 클래스는 불변 데이터 모델링을 잘하는 특별한 종류의 클래스입니다. 패턴 일치에 매우 유용합니다.

class 앞에 case 키워드를 추가하여 케이스 클래스로 만듭니다.

예제 코드 1:

case class student (name:String, rollNo:Int)
object myClass
{

    def main(args: Array[String])
    {
        var st = student("Tony", 33)
        println("Name of the student is: " + st.name);
        println("Roll number of the student is: " + st.rollNo);
    }
}

출력:

Name of the student is: Tony
Roll number of the student is: 33

이제 이러한 사례 클래스를 확장하거나 상속하는 방법을 살펴보겠습니다. 일반 수업과 달리 여기에는 몇 가지 제한 사항이 있습니다.

예제 코드 2:

case class records(schoolID: Int)
case class student (name:String, rollNo:Int) extends records
object myClass
{

    def main(args: Array[String])
    {
        var st = student("Tony", 33)

    }
}

출력:

error: case class student has case ancestor records, but case-to-case inheritance is prohibited

위의 코드는 Scala에서 case-to-case 클래스 상속이 금지되어 있기 때문에 오류가 발생합니다. Scala에 따르면 케이스 클래스는 일반 클래스, 추상 클래스 또는 특성만 확장할 수 있습니다.

예제 코드 3:

여기서 우리는 추상 클래스를 확장하려고 합니다.

abstract class records(schoolName: String)
{
    def name:Unit
}
case class student (schoolName:String) extends records(schoolName)
{
    override def name:Unit = println(schoolName)
}
object myClass
{

    def main(args: Array[String])
    {

        var st = student("delhi public school")
        st.name
    }
}

출력:

delhi public school

예제 코드 4:

여기서 우리는 특성을 확장하려고 합니다.

trait information
{
  def id: Int
  def name: String
}
case class student (id:Int,name:String) extends information
{
    println(id+" "+name)
}
object myClass
{

    def main(args: Array[String])
    {

       val temp: information = student(230,"Tony")
    }
}

출력:

230 Tony

결론

이 기사에서는 Scala에서 클래스를 확장하는 방법을 설명했습니다. 또한 case 클래스를 확장하는 방법과 다른 클래스를 상속할 때 제한 사항을 관찰했습니다.