Scala에서 클래스 확장

Suraj P 2023년6월21일
  1. Scala에서 클래스 확장
  2. Scala에서 케이스 클래스 확장
  3. 결론
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 클래스를 확장하는 방법과 다른 클래스를 상속할 때 제한 사항을 관찰했습니다.

작가: Suraj P
Suraj P avatar Suraj P avatar

A technophile and a Big Data developer by passion. Loves developing advance C++ and Java applications in free time works as SME at Chegg where I help students with there doubts and assignments in the field of Computer Science.

LinkedIn GitHub