0 امتیاز
قبل در برنامه نویسی توسط (982 امتیاز)
برچسب گذاری دوباره قبل توسط
چگونه در کلاس های اسکالا چند Constructor داشته باشیم؟

1 پاسخ

+2 امتیاز
قبل توسط (112 امتیاز)

برای داشتن چندین constructor کافیه که overload های مختلف برای متد this بنویسید:

class Point2D(var x: Int, var y: Int) {
  override def toString: String = s"[$x, $y]"
}

class Point3D(_x: Int, _y: Int, var z: Int) extends Point2D(_x, _y) {
  def this(p: Point2D, z: Int) {
    this(p.x, p.y, z)
    println("Secondary Constructor")
  }
  override def toString: String = s"[$x, $y, $z]"
}

...

val p1 = new Point2D(1, 1)
val p2 = new Point3D(1, 2, 4)
val p3 = new Point3D(p1, 3)

چنتا نکته:

1. حتما باید توی اولین خط this صدا زده بشه (مشابه جاوا)

2. به کلمه کلیدی var و اسم پارامترها هم دقت کنید. اگر به جای _x از x استفاده بشه بین x ای که مال Point2D هست و x ای که برای Point3D هست ابهام به وجود میاد. بهتره که اسم متفاوتی داشته باشن.

سوالات مشابه

0 امتیاز
1 پاسخ 308 بازدید
0 امتیاز
1 پاسخ 383 بازدید
سوال شده 9 سال قبل در برنامه نویسی توسط Saeed Zarinfam (1.1هزار امتیاز)
+4 امتیاز
1 پاسخ 927 بازدید
+2 امتیاز
2 پاسخ 382 بازدید
0 امتیاز
1 پاسخ 380 بازدید
سوال شده 8 سال قبل در برنامه نویسی توسط Saeed Zarinfam (1.1هزار امتیاز)
+1 امتیاز
1 پاسخ 389 بازدید
سوال شده 9 سال قبل در برنامه نویسی توسط Saeed Zarinfam (1.1هزار امتیاز)
0 امتیاز
2 پاسخ 441 بازدید
سوال شده 10 سال قبل در برنامه نویسی توسط Saeed Zarinfam (1.1هزار امتیاز)
+2 امتیاز
1 پاسخ 566 بازدید
سوال شده 4 سال قبل در برنامه نویسی توسط 1993 (242 امتیاز)
0 امتیاز
1 پاسخ 372 بازدید
سوال شده 6 سال قبل در برنامه نویسی توسط یوری (426 امتیاز)
+1 امتیاز
1 پاسخ 499 بازدید
...