Подкласс частных свойств Typescript не может получить доступ - PullRequest
0 голосов
/ 17 июня 2020

вот основные c класс Person и подкласс Student

  class Person {
    constructor(private name:string){}
  }

  class Student extends Person {
     greet(){
       console.log('Hi, I'm ' + this.name)
     }
  }


, и я получил сообщение об ошибке:

Свойство 'name' является частным и доступно только внутри класса 'Person'.

согласно docs об автоматах c Конструкторы

В производном классе конструктор automati c имеет тот же список параметров (и, возможно, перегрузки), что и конструктор базового класса.

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

и что мне делать, чтобы убедиться, что у класса Student есть собственное имя свойства?

Ответы [ 2 ]

0 голосов
/ 17 июня 2020

Я также хотел бы отметить, что в примере, написанном вами выше, когда вы пытаетесь получить доступ к свойству базового класса в подклассе, это невозможно, потому что здесь мы нарушаем принцип абстракции от Object -Ориентированное программирование. Это просто означает, что подкласс также не может получить доступ к частным свойствам родительского класса. Следовательно, здесь используется принцип простой абстракции. Я надеюсь, что это помогает. :)

0 голосов
/ 17 июня 2020

Вам необходимо изменить частный на защищенный. from typescriptlang.org :

Private # TypeScript. TypeScript также имеет собственный способ объявить член как помеченный как частный, к нему нельзя получить доступ из за пределами содержащего его класса.

- означает, что частные поля будут во всех подклассах, но вы не сможете получить к нему доступ.

Понимание protected # Модификатор protected действует так же, как модификатор private, за исключением того, что члены, объявленные protected , также могут быть доступны внутри производных классов.

- это то, что вам нужно, поля, которые могут ' Доступ извне возможен, но доступен во всех подклассах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...