2012-05-17 3 views
1
abstract class SuperParent 
{ 
    public abstract void Show(); 
    public void Display() 
    { 
     System.out.println("HI............I m ur grandpa and in Display()"); 
    } 
} 

abstract class Parent extends SuperParent 
{ 
    public abstract void Detail(); 
    public void Show() 
    { 
     System.out.println("implemented abstract Show()method of Superparent in parent thru super"); 
    } 
    public void Display() 
    { 
     System.out.println("Override display() method of Superparent in parent thru super");  
    } 
} 

public class Child extends Parent 
{ 
    Child() 
    { 
     super.Show(); 
     super.Display(); 
    } 
    public void Show() 
    { 
     System.out.println("Override show() method of parent in Child"); 
    } 
    public void Detail() 
    { 
     System.out.println("implemented abstract Detail()method of parent "); 
    } 
    public void Display() 
    { 
     System.out.println("Override display() method of Superparent and Parent in child ");  
    } 

    public static void main(String[] args) { 
     Child c1= new Child(); 
     c1.Show(); 
     c1.Display(); 

     Parent p1=new Child(); 
     p1.Detail(); 
     p1.Display(); 
     p1.Show(); 

    } 
} 

создать абстрактный класс superparent с одним абстрактным методом шоу() и один конкретный дисплей() метод. Теперь мы создадим класс Parent расширяет superparent с одной абстрактной детали метода () и конкретный метод display(), который является переопределением от суперсовместимого и реализуемого метода show(), который является абстрактным в суперпрозрачном, теперь я создаю дочерний класс, расширяющий родительский элемент, с помощью метода Detail(), который является абстрактным в методе Parent и overide display() который находится в родительском и супервариантном и переопределяемом show(), который находится в родительском. теперь я создаю экземпляр дочернего элемента и запускаю весь метод, и он вызывает весь дочерний метод, fine.and, если мы хотим запустить родительский метод, тогда мы используем метод super.parent в конструкторе, работаем нормально. но как я запускаю отображение превосходного метода() из класса ребенка.Как я использую метод superparent класса из дочернего класса

+0

Это невозможно. –

+0

Что-то несовместимое, вы укажете плз. –

ответ

1

Это не поддерживается языком Java.

Вы должны будете звонить SuperParent.show() из Parent и вызывать этот код из Child:

abstract class Parent extends SuperParent { 

    ... 

    public void superParentShow() { 
     super.Show(); 
    } 
} 

, а затем вызвать

super.superParentShow() 

из Child.

Связанные вопрос:

+0

, если мы используем иерархию классов abstarct и переопределяем методы, тогда мы не можем делать код для каждого метода superparent.it ничего не стоит ... и нецелесообразно –

+1

Да, действительно. Но ты не должен этого делать. Если класс Child расширяет родительский элемент, то он является родителем, и если родительский объект должен быть подклассом, он должен предоставить необходимые методы для подклассов, но не более. Предоставление каждого метода от дедушки и бабушки - лучший способ разбить инкапсуляцию. –

+0

Мы знаем, что супер используется для выполнения родительского метода и конструктора означает, что у него есть ссылка на родительский класс, если мы набираем листинг супер с суперсовместимым, тогда мы можем получить метод суперпараметра. Можем ли мы отличить супер –

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