У меня есть три класса.Главное, Животное (Суперкласс) и Кошка (Подкласс).Когда я попытался вызвать метод whatIsTheClass (), я не понял вывод «Cat».Я ожидал увидеть выход «Животное».Причина, по которой я ожидал вывод «Animal», заключается в том, что я считаю, что метод whatIsTheClass () вызывается из объекта Animal, а не объекта Cat, поскольку подкласс не содержит этот метод.
Основной класс:
package com.example.java;
public class Main {
public static void main(String[] args) {
Animal cat = new Cat();
}
}
Класс Cat:
package com.example.java;
public class Cat extends Animal {
public Cat() {
super();
whatIsTheClass();
}
}
Класс Animal:
package com.example.java;
public class Animal {
public void whatIsTheClass() {
System.out.println(this.getClass().getSimpleName());
}
}
Насколько я понимаю, в наследовании Подкласс не копирует методы из Суперкласса.Если вызываемый метод не определен в объекте Subclass, он будет искать вызываемый метод в объекте Superclass.И если вызываемый метод определен в объекте Superclass, он будет вызван оттуда.В этом случае, поскольку подкласс не определяет свой собственный метод whatIsTheClass (), он должен был использовать метод whatIsTheClass (), определенный в объекте Superclass.Но если whatIsTheClass () был вызван из объекта Superclass, почему он возвращает имя подкласса, а не имя суперкласса?