Scala でクラスを拡張する
Suraj P
2023年6月21日
この記事では、Scala でのクラスの拡張について学びます。
Scala でクラスを拡張する
Scala では、クラスを拡張して、オブジェクト指向プログラミング (OOP) の最も重要な部分の 1つである継承を実現します。 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 ではケース ツー ケースのクラス継承が禁止されているため、上記のコードではエラーが発生します。 Scala によれば、case class
は、通常のクラス、abstract class
、または trait
のみを拡張できます。
コード例 3:
ここでは、abstract class
を拡張しようとしています。
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
を拡張しようとしています。
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
クラスを拡張する方法と、別のクラスを継承する際の制限についても説明しました。