假设我有A、B和C三个类(class)。B扩展AC扩展B都定义了一个publicvoidfoo()方法。现在我想从C的foo()方法调用A的foo()方法(不是它的父B的方法,而是超父类(superclass)A的方法)。我试过super.super.foo();,但它的语法无效。我怎样才能做到这一点? 最佳答案 你甚至不能使用反射。类似的东西ClasssuperSuperClass=this.getClass().getSuperclass().getSuperclass();superSuperClass.getMethod("
假设我有A、B和C三个类(class)。B扩展AC扩展B都定义了一个publicvoidfoo()方法。现在我想从C的foo()方法调用A的foo()方法(不是它的父B的方法,而是超父类(superclass)A的方法)。我试过super.super.foo();,但它的语法无效。我怎样才能做到这一点? 最佳答案 你甚至不能使用反射。类似的东西ClasssuperSuperClass=this.getClass().getSuperclass().getSuperclass();superSuperClass.getMethod("
请参阅下面的代码,其中方法print被覆盖,但变量a未被覆盖。为什么允许在子类中声明重复变量?classB{inta=10;publicvoidprint(){System.out.println("insideBsuperclass");}}classCextendsB{inta=20;publicvoidprint(){System.out.println("insideCsubclass");}}publicclassA{publicstaticvoidmain(String[]args){Bb=newC();b.print();//prints:insideCsubclassS
请参阅下面的代码,其中方法print被覆盖,但变量a未被覆盖。为什么允许在子类中声明重复变量?classB{inta=10;publicvoidprint(){System.out.println("insideBsuperclass");}}classCextendsB{inta=20;publicvoidprint(){System.out.println("insideCsubclass");}}publicclassA{publicstaticvoidmain(String[]args){Bb=newC();b.print();//prints:insideCsubclassS
我想重构一些目前由一个父类(superclass)和两个子类组成的代码。这些是我的类(class):publicclassAnimal{inta;intb;intc;}publicclassDogextendsAnimal{intd;inte;}publicclassCatextendsAnimal{intf;intg;}这是我当前的代码:ArrayListlistAnimal=newArrayList();if(condition){Dogdog=newDog();dog.setA(..);dog.setB(..);dog.setC(..);dog.setD(..);dog.setE
我想重构一些目前由一个父类(superclass)和两个子类组成的代码。这些是我的类(class):publicclassAnimal{inta;intb;intc;}publicclassDogextendsAnimal{intd;inte;}publicclassCatextendsAnimal{intf;intg;}这是我当前的代码:ArrayListlistAnimal=newArrayList();if(condition){Dogdog=newDog();dog.setA(..);dog.setB(..);dog.setC(..);dog.setD(..);dog.setE
我有两个类(class):publicclassA{publicObjectmethod(){...}}publicclassBextendsA{@OverridepublicObjectmethod(){...}}我有一个B的实例。如何从b调用A.method()?基本上和从B调用super.method()的效果一样。Bb=newB();Classsuperclass=b.getClass().getSuperclass();Methodmethod=superclass.getMethod("method",ArrayUtils.EMPTY_CLASS_ARRAY);Object
我有两个类(class):publicclassA{publicObjectmethod(){...}}publicclassBextendsA{@OverridepublicObjectmethod(){...}}我有一个B的实例。如何从b调用A.method()?基本上和从B调用super.method()的效果一样。Bb=newB();Classsuperclass=b.getClass().getSuperclass();Methodmethod=superclass.getMethod("method",ArrayUtils.EMPTY_CLASS_ARRAY);Object
考虑以下Java类声明:publicclassTest{privatefinalintdefaultValue=10;privateintvar;publicTest(){this(defaultValue);//代码将无法编译,编译器会提示我在上面突出显示的行。为什么会发生此错误,最好的解决方法是什么? 最佳答案 代码最初无法编译的原因是因为defaultValue是Test类的instancevariable,意思是当一个对象Test类型的创建,defaultValue的唯一实例也被创建并附加到该特定对象。因此,无法在构造函数中
考虑以下Java类声明:publicclassTest{privatefinalintdefaultValue=10;privateintvar;publicTest(){this(defaultValue);//代码将无法编译,编译器会提示我在上面突出显示的行。为什么会发生此错误,最好的解决方法是什么? 最佳答案 代码最初无法编译的原因是因为defaultValue是Test类的instancevariable,意思是当一个对象Test类型的创建,defaultValue的唯一实例也被创建并附加到该特定对象。因此,无法在构造函数中