Scala でクラスを拡張する

Suraj P 2023年6月21日
  1. Scala でクラスを拡張する
  2. Scala でのケース クラスの拡張
  3. まとめ
Scala でクラスを拡張する

この記事では、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

上記のコードでは、クラス 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 ではケース ツー ケースのクラス継承が禁止されているため、上記のコードではエラーが発生します。 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 クラスを拡張する方法と、別のクラスを継承する際の制限についても説明しました。

著者: 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