В первом случае все компилирует, выводит "Василий Тигранович". Во втором просто не видит функцию getName(). Объясните, пожалуйста, почему в первом случае вызвается функция объекта, а не ссылки, но на этапе компиляции проверка доступна ли та или иная функция осуществляется по ссылке?
Более общий вопрос: что вообще происходит на этапе компиляции? Какие проверки осуществляются?
public class Main {
public static void main(String[] args) {
Cat tiger = new Tiger();
System.out.println(tiger.getName());
}
}
class Cat
{
public String getName()
{
return "Васька";
}
}
class Tiger extends Cat
{
public String getName()
{
return "Василий Тигранович";
}
}
public class Main {
public static void main(String[] args) {
Cat tiger = new Tiger();
System.out.println(tiger.getName());
}
}
class Cat
{
}
class Tiger extends Cat
{
public String getName()
{
return "Василий Тигранович";
}
}