当前位置: 代码迷 >> Java相关 >> 关于调用父类的父类方法有关问题
  详细解决方案

关于调用父类的父类方法有关问题

热度:28   发布时间:2016-04-22 20:56:53.0
关于调用父类的父类方法问题
本帖最后由 sj660512 于 2014-10-13 12:49:10 编辑

class one {
    public void show(){
        System.out.println("one");
    }
}

class two extends one{
    public void show(){
        System.out.println("two");
    }
}

public class Test extends two
{
    public static void main(String[] args)
    {
       Test    t = new Test();
        t.show(); //打印two
        //想调用one的show怎么做呢
    }
}

------解决思路----------------------
那似乎不可行啊,既然类已经是你定义过并且决定了改写掉继承来的,那就不要再想着祖宗的那份啊。这只能说明你决定改写继承而来的方法时的决定是错误的。
------解决思路----------------------
java 语言没这功能,C++可以!
------解决思路----------------------
子类已经重写父类的方法了,没法这样用
------解决思路----------------------
可以调用的。。。  看我的
    t.getClass().getSuperclass().getSuperclass().getDeclaredMethod ("show").invoke( t.getClass().getSuperclass().getSuperclass().newInstance(), null);
    
------解决思路----------------------
因为你子类重写父类方法,所以子类的]对象将无法访问父类中被重写的方法,但可以在子类方法中调用父类中被重写的方法。可以这样写:super.show();
super不能出现在static修饰的方法中
------解决思路----------------------
引用:
可以调用的。。。  看我的
    t.getClass().getSuperclass().getSuperclass().getDeclaredMethod ("show").invoke( t.getClass().getSuperclass().getSuperclass().newInstance(), null);
    


这种情况,你既然能获得直接new 子类(),那么也 能 直接 new 父类();
完全没必要用用反射了,直接new父类 调用就是了.
------解决思路----------------------
引用:
Quote: 引用:

可以调用的。。。  看我的
    t.getClass().getSuperclass().getSuperclass().getDeclaredMethod ("show").invoke( t.getClass().getSuperclass().getSuperclass().newInstance(), null);
    


这种情况,你既然能获得直接new 子类(),那么也 能 直接 new 父类();
完全没必要用用反射了,直接new父类 调用就是了.


直接new父类 也可以打到这个输出效果,但是没有灵活性了,没有扩展性。因为指明父类编译级了。。而是用superclass,是运行时,有动态性。。
  相关解决方案