Наследование

Последнее обновление: 14.05.2020
Вопрос 1

Для наследования одного класса от другого применяется какой оператор?

  • extends

  • implements

  • inherits

  • extending

Для наследования одного класса от другого применяется оператор extends

Вопрос 2

Что будет выведено на консоль при выполнении следующей программы и почему?

void main (){
     
    Employee bob = Employee("Bob");
    bob.display();
} 
 
class Person{
  
    String name;
    Person(this.name){
	
		print("Создан пользователь $name");
	}
      
    void display(){
        print("Name: $name");
    }
}
class Employee extends Person{
}

При выполнении данной программы она завершится с ошибкой, соответственно на консоли мы увидим только описание ошибки. Поскольку классы в Dart не наследуют конструкторы, то для создания объекта Employee мы не можем использовать вызов

Employee bob = Employee("Bob");
Вопрос 3

Что будет выведено на консоль при выполнении следующей программы и почему?

void main (){
     
    Employee bob = Employee("Bob");
    bob.display();
} 
 
class Person{
  
    String name;
    Person(this.name){
	
		print("Создан пользователь $name");
	}
      
    void display(){
        print("Name: $name");
    }
}
class Employee extends Person{
 
    Employee(String name){
		this.name = name;
	}
}

Данная программа завершится с ошибкой, поскольку производные классы при определении конструктора должны обязательно вызывать конструктор базового класса (если базовый класс явно определяет конструкторы). В данном случае конструктор класса Employee не вызывает конструктор класса Person, соответственно мы получим ошибку.

Вопрос 4

Что будет выведено на консоль при выполнении следующей программы и почему?

void main (){
     
    Employee bob = Employee("Bob");
    bob.display();
} 
 
class Person{
  
    String? name;
    void display(){
        print("Name: $name");
    }
}
class Employee extends Person{
 
    Employee(String name){
		this.name = name;
	}
}

На консоль будет выведена строка "Name: Bob", так как вызывается метод display, определенный в базовом классе Person.

Дополнительные материалы
Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850