Наследование Java: ошибка при использовании метода @Override - PullRequest
0 голосов
/ 23 марта 2012

У меня есть два примера.Первое верно, а второе неверно.В какой-то момент все по-другому: класс Animal и класс Mammal.

public class Inheritance {

    public static class Animal {        
        public void Scream() {
            System.out.println("I'm an animal");
        }       
    }

    public  static class Mammal extends Animal{
                   //no Scream method
    }

    public  static class Tiger extends Mammal{
        public void Scream(){
            System.out.println("I'm a tiger");
        }       
    }

    public static void main (String[] args){

        Animal tiger = new Tiger();
        tiger.Scream(); //True
    }
}

Второй пример:

public class Inheritance {

    public static class Animal {        
                 // no Scream method
    }

    public  static class Mammal extends Animal{
        public void Scream(){
            System.out.println("I'm a mammal");
        }       
    }

    public  static class Tiger extends Mammal{
        public void Scream(){
            System.out.println("I'm a tiger");
        }       
    }

    public static void main (String[] args){

        Animal tiger = new Tiger();
        tiger.Scream(); //false. Error
    }
}

Спасибо:)

@: я редактировал.Я набрал несоответствие.

Ответы [ 2 ]

4 голосов
/ 23 марта 2012

Я проверил ваши 2 класса, и они оба работают.Я не буду работать, если вы попробуете что-то вроде: Animal tiger = new Tiger ();во втором случае, поскольку у Animal нет метода Scream ()

Кстати: обычно имена методов начинаются со строчных букв; -)

0 голосов
/ 23 марта 2012

Обе версии работают отлично.В обоих случаях говорится «тигр»

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...