Я пытаюсь понять наследование, когда задействованы интерфейсы. Я хочу знать, как создаются подклассы, если они следуют следующему:
Например, скажем, у меня есть:
- Суперкласс, который реализует интерфейс I
- и пара подклассов, которые расширяют суперкласс A
Мои вопросы
-
Должен ли я предоставить реализацию методов интерфейса "q и r" во всех подклассах, которые расширяют A?
-
Если я не предоставляю реализацию интерфейса в подклассе, я должен сделать этот подкласс абстрактным классом?
-
Возможно ли реализовать какой-либо из подкласса I? например Класс C расширяет A реализует I, возможно ли это? даже если он уже расширяет суперкласс, который реализует I?
-
Скажем, я не предоставляю реализацию метода r из интерфейса I, тогда мне придется сделать класс суперкласса A и Abstract! это правильно?
Мой пример кода:
//superclass
public class A implements I{
x(){System.out.println("superclass x");}
y(){System.out.println("superclass y");}
q(){System.out.println("interface method q");}
r(){System.out.println("interface method r");}
}
//Interface
public Interface I{
public void q();
public void r();
}
//subclass 1
public class B extends A{
//will i have to implement the method q and r?
x(){System.out.println("called method x in B");}
y(){System.out.println("called method y in B");}
}
//subclass 2
public class C extends A{
//will i have to implement the method q and r?
x(){System.out.println("called method x in C");}
y(){System.out.println("called method y in C");}
}