这个问题在这里已经有了答案:Whyissuper.super.method();notallowedinJava?(22个答案)关闭9年前。publicclassGrandParent{publicvoidwalk(){...}}publicclassParent{publicvoidwalk(){...}}publicclassChild{publicvoidwalk(){//HereinsomecasesIwanttousewalkmethodofGrandParentclass}}现在在Child.walk()中,我只想在某些情况下使用GrandParent.walk()。我怎样
我有这个条件publicclassA{publicaction(){System.out.println("ActiondoneinA");}}publicclassBextendsA{publicaction(){System.out.println("ActiondoneinB");}}当我创建B的实例时,该操作将只执行B中的操作,因为它会覆盖父类(superclass)的操作。问题是在我的项目中,父类(superclass)A已经被使用了太多次,我正在寻找一种方法,在某些条件下,当我创建A的实例时,它会检查它是否为真,用B替换自己。publicclassA{publicA(){i
Java中的以下代码,当在elipse上运行时,即使我们替换也会给出相同的输出superclasss=newsub();与,subs=newsub();请注意,我们已经覆盖了方法。输出是:changedsupermethodinsubclassnumissubclass5代码:publicclasssuperclass{intnum=2;publicstaticvoidmain(Stringstr[]){superclasss=newsub();//HERE:nothingchangesifwewrite,subs=newsub();s.supermethod();s.method()
好的,例如,假设我有一个名为“Vehicle”的抽象类。Vehicle类有一个名为wheels的静态变量,它没有被初始化。我想要做的是从Vehicle类扩展其他子类,如“摩托车”和“卡车”,并在这些子类中初始化车轮。代码:publicabstractclassVehicle{staticintwheels;//numberofwheelsonthevehicle}但以下不起作用:publicclassMotorcycleextendsVehicle{wheels=2;}有没有办法有效地做到这一点?编辑:感谢到目前为止所有回复的人。我知道创建实例可能是比将它们全部放在单独的类中更好的方法
publicbooleanisUserControled(){returnaction.getClass().getSuperclass().toString().equals("classlogic.UserBehaviour");}我认为这段代码是不言自明的。有没有更聪明的方法来做到这一点?谢谢 最佳答案 (actioninstanceoflogic.UserBehaviour)如果action是扩展UserBehavior类型的对象,则返回true。摘自http://download.oracle.com/javase/tut
如果我在MyClass中有一个方法,例如setSuperClassList(List)...我应该能够这样做吗:newMyClass().setSuperClassList(newArrayList())这似乎无法编译。为什么? 最佳答案 尝试setSuperClassList(List).同时检查PECS看看你是否应该使用?extends或?super. 关于Java泛型:setListofsuperclassusingListofsubclass,我们在StackOverflow上找
我从事一个相对复杂的Java项目,其中类在Object之前通常有四到五个祖先。给定这样一个类,例如D在这样的层次结构中:Object>A>B>C>D,我想知道它有效实现的所有接口(interface)。也就是说,我也有兴趣看到D实现,比如说,Serializable,即使它仅在类B的声明中声明,并且即使D实际上没有实现接口(interface)指定的任何方法(当然,如果谈论Serializable)。我试过的这些信息的一些潜在来源包括:在“结构”窗口中使用“按定义类型分组”——但这不会显示空接口(interface)(=没有方法的接口(interface)),并且“层次结构”窗口——但
我有一个Java初学者问题:Parent.print()在控制台打印“hallo”,而且Child.print()打印“hallo”。我认为它必须打印“child”。我该如何解决这个问题?publicclassParent{privateStringoutput="hallo";publicvoidprint(){System.out.println(output);}}publicclassChildextendsParent{privateStringoutput="child";} 最佳答案 目前你有两个独立的变量,Paren
我有两个类(class)学生和导师。Tutor基本上是一个拥有facultyID的学生(TutorextendsStudent)。一旦他的契约(Contract)完成,他就回到了一个学生的身份。那么我能否以某种方式将他转换回他“以前”的学生名单? 最佳答案 在这里你真正想做的是使用compositionandnotinheritance.将所有对象保留为类型Student,然后临时分配一个TutorRole的行为因为Student的每个实例都需要它.有了这个设计,您的Student类将包含TutorRole类型的属性(成员变量)您可
为什么会产生以下Java代码:10superclass有问题的代码是:classSuperClass{inta;publicSuperClass(){this.a=10;}privatevoidanother_print(){System.out.println("superclass");}publicvoidprint(){System.out.println(this.a);this.another_print();}}classSubClassextendsSuperClass{inta;publicSubClass(){this.a=20;}privatevoidanothe