2015-06-05 5 views
0

Здравствуйте, я путаюсь в методе, поэтому, пожалуйста, помогите мне? Ниже мой сценарийJava abstract class, Interface, method Overriding

У меня есть один абстрактный класс

public abstract class VehicalAbstarct { 

    public abstract void speed(); 
} 

У меня есть один интерфейс

public interface Vehical { 

    public void speed(); 
} 

У меня есть еще один класс, который расширяет VehicalAbstarct и implemnts Vehical интерфейс

public class VehicalExample extends VehicalAbstarct implements Vehical { 

    public static void main(String[] args) { 
     // TODO Auto-generated method stub 
     VehicalExample v=new VehicalExample(); 
     v.speed(); 
    } 

    @Override 
    public void speed() { 
     // TODO Auto-generated method stub 
     System.out.println("Speed is calling from vehical example.."); 
    } 

} 

***********OUTPUT************ 
Speed is calling from vehical example.. 

Теперь скорость() метод @Override по VehicalAbstarct класса или @Override по интерфейс Vehical?

Если @Override VehicalAbstarct класс, то как? и @Override by Vehical интерфейс тогда как?

+0

Да, тот же метод. –

+2

Хорошо, когда кто-то связывает вас с другим вопросом, вы должны прочитать его и сказать, отвечает ли он на ваш вопрос. Я думаю, что принятый ответ касается того, что вы спрашиваете - вы переопределяете оба. Точно так же, как если бы вы реализовали два отдельных интерфейса, имеющих общее имя метода. – dcsohl

+0

Его переопределение как – aa1992

ответ

0

Вы переопределяете метод в VehicalAbstarct, который переопределяет метод в интерфейсе Vehical. Таким образом, вы обойдете их обоих.

Смотрите этот пример:

interface A { 
    default void method() { 
    } 
} 

abstract class B { 
    abstract void method(); 
} 

class C extends B implements A { 
    // compiler error, method() not implemented 
} 

Даже если A имеет реализацию по умолчанию method(), это переопределён B с абстрактным. Поэтому мы должны переопределить его в C.