Расширение типов на Java

Рейтинг: 0Ответов: 1Опубликовано: 07.12.2014

Столкнулся с проблемой. Не могу понять тему расширение типов.
Вот пример:

public static void main(String[] args)
    {
        A cat = new B();
        System.out.println((B)cat.getNameB());
    }

    public static class A{
        public String getNameA(){
            return "A";
        }
    }

    public static class B extends A
    {
        public String getNameB(){
            return "B";
        }
    }

Почему я не могу вызвать System.out.println((B)cat.getNameB()); метод getNameB. Ведь я создал ссылку на его класс. И расширили переменную cat до класса B. А значит методы в этом классе стали мне доуступны?

Ответы

▲ 3

Вы можете вызвать даже getNameA, просто неправильно записали:

((B)cat).getNameB()