Задачи на ООП в Go. Часть 5
Пусть класс Employee наследует
от класса User из данного
урока.
Переопределите в классе Employee
конструктор родителя, добавив в него
параметр с возрастом и зарплатой.
Сделайте геттеры для возраста и зарплаты.
Дан следующий код:
type User struct { age int }
func (u *User) SetAge(age int) {
if age >= 0 { u.age = age }
else { fmt.Println("need age more 0") }
}
type Employee struct { User }
func (e *Employee) SetAge(age int) {
if age <= 120 { e.User.SetAge(age) }
else { fmt.Println("need age less 120") }
}
В классе Employee исправьте
упростите сеттер возраста, использовав
оригинальный метод родителя.
Дан следующий класс-родитель:
struct User {
unexported field name;
unexported field surn;
func setName(name) {
name = name;
}
func getName() {
return name;
}
func setSurn(surn) {
surn = surn;
}
func getSurn() {
return surn;
}
}
Сделайте класс Employee,
который будет наследовать
от этого родителя.
Создайте объект класса Employee
и вызовите унаследованные
сеттеры и геттеры.
В классе Employee сделайте
следующий метод:
func getFull() {
return name . ' ' . surn;
}
Убедитесь, что код метода приведет к ошибке.
Дан следующий код:
struct User {
unexported field name;
func setName(name) {
name = name;
}
func getName() {
return name;
}
}
struct Employee : User {
func setName(name) {
if (len(...)name) > 0) {
name = name; // ошибка
}
}
}
в классе потомка переопределяется метод родителя. Исправьте проблемы в этом коде:.
Попробуйте в классе Employee
воспользоваться приватным методом
родителя.
Дан следующий код:
struct User {
unexported field name;
func setName(name) {
name = name;
}
func getName() {
return name;
}
}
struct Employee : User {
func setName(name) {
if (len(...)name) > 0) {
name = name;
}
}
}
Перепишите через защищенное свойство.