Java 如何从子类使用superparent类方法

Java 如何从子类使用superparent类方法,java,inheritance,abstract-class,Java,Inheritance,Abstract Class,我用一个抽象方法show()和一个具体方法Display()创建了一个抽象类superparent。现在我们用一个抽象方法detail()和具体方法Display()创建了一个父类来扩展superparent,它被superparent覆盖,并实现了在superparent中抽象的show()方法,现在,我创建了一个子类extensedparent,其中implementmethoddetail()在Parent中是抽象的,overidedisplay()方法在Parent中是抽象的,super

我用一个抽象方法show()和一个具体方法Display()创建了一个抽象类superparent。现在我们用一个抽象方法detail()和具体方法Display()创建了一个父类来扩展superparent,它被superparent覆盖,并实现了在superparent中抽象的show()方法,现在,我创建了一个子类extensedparent,其中implementmethoddetail()在Parent中是抽象的,overidedisplay()方法在Parent中是抽象的,superparent和overideshow()在Parent中是抽象的。现在我创建了一个child实例并运行all方法,它调用all child方法,很好。如果我们想运行parent方法,那么我们在构造函数中使用super.parent方法,运行fine。但是我如何从子类运行superparent方法display()

这是Java语言不支持的

您必须从
Parent
调用
SuperParent.show()
,并从
Child
调用此代码:

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();

    }
}
然后打电话

abstract class Parent extends SuperParent {

    ...

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

相关问题:


这是Java语言不支持的

您必须从
Parent
调用
SuperParent.show()
,并从
Child
调用此代码:

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();

    }
}
然后打电话

abstract class Parent extends SuperParent {

    ...

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

相关问题:


如果我们使用Abstract类的继承权和重写方法,那么我们不能为superparent的每个方法编写代码。它毫无价值..而且不可行是的。但你不应该这么做。如果子类扩展了父类,那么它就是父类,如果父类是子类,那么它应该为子类提供必要的方法,但不能提供更多。提供祖父母提供的每个方法是打破封装的最佳方式。我们知道super用于执行父方法,构造函数意味着它具有父类的引用。如果我们使用superparent类型强制转换super,那么我们可以访问superparent的方法。我们可以将superparent引用强制转换为父(和superparent)吗与子引用相同。(‘这个’)。你可以强制转换,但这不会有什么区别,因为所有方法都是虚拟的。如果我们使用Abstract类的继承权和重写方法,那么我们无法为superparent的每个方法编写代码。它毫无价值..而且不可行的确如此。但你不应该这么做。如果子类扩展了父类,那么它就是父类,如果父类是子类,那么它应该为子类提供必要的方法,但不能提供更多。提供祖父母提供的每个方法是打破封装的最佳方式。我们知道super用于执行父方法,构造函数意味着它具有父类的引用。如果我们使用superparent类型强制转换super,那么我们可以访问superparent的方法。我们可以将superparent引用强制转换为父(和superparent)吗与子引用相同。(‘这个’)。你可以强制转换,但这不会有什么区别,因为所有方法都是虚拟的。什么不可能,你会指定吗?什么不可能,你会指定吗。