Класс AHK V2 расширяет проблемы

Я не уверен, что неправильно использую классы, но буду признателен за любую помощь. Я использую Autohotkey V2 и пытаюсь расширить класс до другого класса.

Class Person{
  __New(info){
    this.name := info.name
    this.age := info.age
  }
}

Class Teacher extends Person{
  __New(subject){
    this.subject := subject
  }
}

Class Student extends Person{
  __New(deskLocation){
    this.deskLocation := deskLocation
  }
}

Я полагаю, что такое планирование классов работает, потому что каждый учитель и ученик — это личность, но учителя и ученики разные. Итак, когда я объявляю свой класс учителя или ученика, я использую

T1 := Teacher("gym")
S1 := Student(11)

Это работает нормально, однако я не уверен, как мне следует устанавливать свойства для каждого человека.

Я пробовал исследовать, лол, но не нашел решения. Это заставляет меня думать, что я делаю что-то не так, но я не знаю что. Я также подумал о том, чтобы объявить свойства в классе Person, а затем назначить их классам Teacher и Student с помощью метода

Class Person{
    name := ""
    age := ""
}

Class Teacher extends Person{
  __New(subject, name, age){
    this.subject := subject
    this.Define("Name","Age")
  }

  Define(name, age) {
    this.name := name
    this.age := age
  }
}

но это будет очень повторяться, потому что мне нужно будет сделать это для каждого свойства, а затем просто удалить класс Person.

Сила классов Java: сравнение с языком C
Сила классов Java: сравнение с языком C
Абстракция" - это процесс упрощения сложных сущностей или концепций реального мира с целью их применения в форме программирования. В Java класс...
0
0
172
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий
#Requires AutoHotkey v2

class Person
{
    __New(info)
    {
        this.name := info.name
        this.age  := info.age
    }
}

class Teacher extends Person
{
    __New(info, subject)
    {
        super.__New(info)
        this.subject := subject
    }
}

class Student extends Person
{
    __New(info, deskLocation)
    {
        super.__New(info)
        this.deskLocation := deskLocation
    }
}

t1 := Teacher({name: "Nikola",age: 100}, "Spanish")
MsgBox(t1.name " " t1.age)
MsgBox(t1 is Person)
MsgBox(t1 is Teacher)

Другие вопросы по теме