Я пытался увидеть использование ключевого слова 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'