Can a same method exist in a class twice, through Inheritance and interfaces?
interface, java
Solution
No - the same method cannot exist in a class twice.
An interface simply declares a requirement for a class to implement a particular method. It does not actually create that method.
So a class that acquires a method implemention through inheritance has that method defined. This (single) implementation satisfies the interface's requirements.
In your case:
- `Dog` extends `Canine`, so it means that the `roam()` method from `Canine` is available, and would be exposed as a method on Dog objects if not overridden.
- But then `Dog` then overrides the superclass' method with its own definition of `roam()`. This is allowed, and there is still just one unambiguous method called `roam()` on `Dog` - the new override.
- `Dog` implements `Pet`, which means it is required to have a `roam()` method. It does - so it's a valid implementation of this interface.
Problem
Here is the scenario:- ``` class Canine{ public void roam(){ System.out.println("Canine-Roam"); } } public interface Pet{ public abstract void roam(); } class Dog extends Canine implements Pet{ public void roam(){ System.out.println("Dog Roam"); } public static void main(String [] args){ Dog adog = new Dog(); adog.roam(); } } ``` I am aware that JVM must not have any confusion in choosing which method to run, that means, which method gets over-ridden. But I am confused anyway. Why does this program compile?