Scala에서 클래스 확장
Suraj P
2023년6월21일
이번 글에서는 스칼라에서 클래스를 확장하는 방법에 대해 알아보겠습니다.
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
위의 코드에서 클래스 childOne
과 childTwo
클래스가 기본 클래스 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
클래스를 확장하는 방법과 다른 클래스를 상속할 때 제한 사항을 관찰했습니다.