草庐IT

java - 调用超父类(super class)方法

假设我有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("

java - 调用超父类(super class)方法

假设我有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("

java - 为什么父类(super class)的实例变量没有被子类覆盖?

请参阅下面的代码,其中方法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

java - 为什么父类(super class)的实例变量没有被子类覆盖?

请参阅下面的代码,其中方法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

java - 如何通过使用父类(super class)来减少代码?

我想重构一些目前由一个父类(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

java - 如何通过使用父类(super class)来减少代码?

我想重构一些目前由一个父类(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

java - 如何使用 Java 反射调用父类(super class)方法

我有两个类(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 - 如何使用 Java 反射调用父类(super class)方法

我有两个类(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 - 在调用父类(super class)型构造函数之前无法引用 "X",其中 x 是最终变量

考虑以下Java类声明:publicclassTest{privatefinalintdefaultValue=10;privateintvar;publicTest(){this(defaultValue);//代码将无法编译,编译器会提示我在上面突出显示的行。为什么会发生此错误,最好的解决方法是什么? 最佳答案 代码最初无法编译的原因是因为defaultValue是Test类的instancevariable,意思是当一个对象Test类型的创建,defaultValue的唯一实例也被创建并附加到该特定对象。因此,无法在构造函数中

java - 在调用父类(super class)型构造函数之前无法引用 "X",其中 x 是最终变量

考虑以下Java类声明:publicclassTest{privatefinalintdefaultValue=10;privateintvar;publicTest(){this(defaultValue);//代码将无法编译,编译器会提示我在上面突出显示的行。为什么会发生此错误,最好的解决方法是什么? 最佳答案 代码最初无法编译的原因是因为defaultValue是Test类的instancevariable,意思是当一个对象Test类型的创建,defaultValue的唯一实例也被创建并附加到该特定对象。因此,无法在构造函数中