различные способы для ключевого слова this в scala дают ошибку перегруженного конструктора - PullRequest
0 голосов
/ 20 июня 2020

Я пытался увидеть использование ключевого слова this в scala. Я попробовал программу ниже:

 class Person(name:String, age:Int){
  var id:Int=10
  def this(name:String, age:Int, i:Int){
      this(name, age)
      this.id = i }
  def show(): Unit = {
    println(this.name+" , "+this.age+" , "+id)}}
 object thisKeyword extends App{
  val t = new Person("Tom",21)
  t.show()}

Теперь я понял, что код вызовет этот конструктор и напечатает Tom, 21,10 как результат, который находится в ожидаемых строках, даже если я передаю только имя и возраст . Но когда я удаляю параметр из класса Person, как показано ниже, и запускаю его:

class Person{

Это дает мне ошибку в строке ниже:

val t = new Person("Tom",21)

не может перегрузить конструктор 'Person'

Не понимаю, почему так написано? Почему он не использует определение конструктора this, которое я определил, и должен вызывать это определение вместе со значением id по умолчанию. Также в строке ниже:

this(name, age)

Это дает ошибку как

Слишком много аргументов для конструктора 'Person'

...