Привет! Сделала два простеньких класса, чтобы кое-что проверить:
public class Person {
public Person() {
System.out.println("Привет! Я класс Person");
}
Person someMethod() {
System.out.println("Tik");
return new Person();
}
и
public class User extends Person {
public User() {
System.out.println("Привет! Я класс User");
}
@Override
public Person someMethod() {
super.someMethod();
return null;
}
}
Если в мэйне написать так:
public static void main(String[] args) throws Exception {
User user = new User();
user.someMethod();
}
То будет такой вывод:
Привет! Я класс Person
Привет! Я класс User
Tik
Привет! Я класс Person
Из чего я делаю, что при вызове someMethod() у класса User, сработал одноименный метод суперкласса (собственно, это очевидно), но в этом методе суперкласса есть оператор return — return new Person(). А в методе-наследнике, он не срабатывает, как будто съелся.
Кто может подсказать, почему так?