2016-02-19 2 views
2

Я встал вопрос в интервью, можно ли получить доступ к дисплею() метода класса ABC от EDC, как указано нижеПризвания суперкласса из подклассов

class ABC { 
    public void display() { 
     System.out.println("from ABC"); 
    } 
} 

class CBD extends ABC { 
    public void display() { 
     System.out.println("From CBD"); 
    } 
} 

class EDC extends CBD { 
    public void display() { 
     System.out.println("From EDC"); 
    } 
} 

Я хотел бы знать, если мы можем получить доступ метод ABC из класса EDC, отличный от создания объекта ABC. Я знаю, что ответ очень прямолинейный и простой, что мы можем получить доступ только к методу суперкласса EDC i.e; display() из CBD через super.display(), но я чувствую, что у меня отсутствует какой-либо подход для доступа к дисплею() ABC из EDC.

Я думаю, что один из возможных подходов, как показано ниже

class ABC { 
public void display() 
{ 
    System.out.println("from ABC"); 
} 
public static void main(String args[]) 
{ 
     ABC obj=new EDC(); 
     obj.display(); 

} 
} 
class CBD extends ABC { 
public void display() 
{ 
    super.display(); 
} 
} 
class EDC extends CBD { 
public void display() 
{ 
    super.display(); 
} 
} 
+0

Вы уже упоминали 'super.display()', поэтому я не сомневаюсь. – aribeiro

+1

@aribeiro 'super' поднимается на один уровень в иерархии. OP хочет подняться на два уровня в иерархии. – Turing85

+0

, но я проясняю себе вопрос, существует ли какой-либо способ, отличный от приведенного выше. Если существует, то я пропускаю простой и очень важный – niks

ответ

2

Нет, это не возможно. Вы можете идти только на один уровень с super.

1

У вас может быть метод, который вызывает super() из CBD и вызывает этот метод из EDC с помощью функции super(), т. Е. Цепочки вызовов.

Смежные вопросы