草庐IT

java - 方法不覆盖或实现父类(super class)型的方法 - 覆盖

我环顾四周,但无法弄清楚为什么会出现错误error:methoddoesnotoverrideorimplementamethodfromasupertype这突出显示了方法(子例程?)中的两个@Override。这是我的MainActivity.java-它出现在queryBooks()方法最后的部分代码-@Override都是红色下划线。packagecom.example.batman.myapplication;importandroid.app.AlertDialog;importandroid.content.DialogInterface;importandroid.co

java - 覆盖属性

当您重写一个方法时,您必须保留该方法的签名并且不能降低它的可见性。现在我尝试使用属性执行此操作时会发生什么。我很惊讶-它有效!看看你自己:publicclassA{publicIntegermyAttribute;}publicclassBextendsA{publicStringmyAttribute;}publicclassMain{publicstaticvoidmain(String[]args){Bb=newB();b.myAttribute="myString";((A)b).myAttribute=1337;System.out.println(b.myAttribute

Java:super.clone() 方法和继承

我有一个关于Java中的clone()方法的快速问题,在继承方面用作super.clone()-我称之为父类中的clone()方法,从按钮一直向上。clone()方法应该返回此对象的副本,但是如果我在继承继承中有三个类并调用super.clone()三个有时,为什么继承继承体系中的最高类(就在类Object下)没有返回该类的副本?假设我们有三个类:A、B和C,其中A->B->C(继承=->)然后在C类调用super.clone(),在B类调用super.clone(),调用clone(),调用clone()在A中调用super.clone()'这次Object.clone()被调用'。

java - 如何在 Java 中完全隐藏父类(super class)方法

最近我在考虑制作我自己的Date库。我在这里发现了一个问题,它是:如何在子类中隐藏父类(superclass)方法?所以它不会在子类中被检测到。例子:我有一个扩展到Date的类,另一个扩展到上一个类的类。在我的新子类中,它检测Date的所有方法,如getDate等。我想要的是在我的子类中Date的所有方法都未被发现,而不是抛出一个异常(exception),但完全未被发现。提前致谢:) 最佳答案 在这里优先考虑组合而不是继承。与其继承Date,不如将其作为MyDate类中的成员字段。publicclassMyDate{private

java - 向继承方法添加注释的最佳方法

我有许多抽象父类(superclass),我的具体类从中继承了各种方法。其中一些方法需要在具体类中放置JPA或JAXB注释。目前我通过以下方式做到这一点:@MyLocalAnnotations@OverridepublicmethodinheritedMethodHere(yaddayadda){super.inheritedMethodHere(yaddayadda);}有没有办法在不覆盖方法的情况下做到这一点?重写一个方法只是为了提供本地注释似乎是一种浪费。 最佳答案 不幸的是,没有比您现在正在做的更好的方法了。考虑到您的JPA

Java .equals() instanceof 子类?为什么不调用父类(super class) equals 而不是将其设为最终类?

它在Object的.equals(Object)javadoc中说明:Itissymmetric:foranynon-nullreferencevaluesxandy,x.equals(y)shouldreturntrueifandonlyify.equals(x)returnstrue.在示例代码中几乎所有地方我都看到重写的.equals(Object)方法,它使用instanceof作为第一个测试之一,例如这里:Whatissues/pitfallsmustbeconsideredwhenoverridingequalsandhashCode?publicclassPerson{p

java - 如何使用父类(super class)的构造函数创建子类的实例

我想为父类(superclass)的子类创建一个注册表。这些类存储在充当注册表的映射中。根据键从注册表中选择一个类,并通过反射创建该类的实例。我想根据父类(superclass)的构造函数(带有1个参数)实例化一个类。仅当我也在子类中声明构造函数时它才有效。有没有办法使用父类(superclass)的构造函数来实例化类?有没有办法使该代码类型安全?示例代码:publicclassReflectionTest{/***Baseclasswithno-argsconstructorandanotherconstructorwith1parameter*/publicstaticclassB

Java:如何在覆盖方法(祖 parent 方法)中调用 super().super()

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:Whyissuper.super.method();notallowedinJava?我有3个类,它们相互继承如下:A↳B↳C在每个类中我都有以下方法:protectedvoidfoo(){...}在C类中我想从A类中调用foo而不是在B中调用foo:protectedvoidfoo(){//Thisdoesn'twork,Igetthefollowingcompiletimeerror://Constructorcallmustbethefirststatementinaconstructorsuper()

java - "inherited"是解释父类(super class)的静态方法可以被子类访问的正确术语吗?

澄清:这个问题不是关于访问修饰符的已确认B.m()和b.m()语句都适用于以下代码:classA{staticvoidm(){//somecode}}classBextendsA{}classExample{publicstaticvoidmain(String[]args){B.m();//runningA'sm()staticmethod}publicvoidtry(){Bb=newB();b.m();//runningA'sm()staticmethod}}我的问题是我们可以说“静态方法是继承的”吗?如果“继承”是正确的术语,如果我们向B类添加一个方法,我们将使用静态类的相同签名

Java 下界通配符

我正在努力解决这个问题,想知道是否有人可以解释其中的原因。我有三个类(class):classAngel{}classPersonextendsAngel{}classEmployeeextendsPerson{}当我尝试执行这段代码时publicstaticvoidinsertElements(Listlist){list.add(newPerson());list.add(newEmployee());list.add(newAngel());}我得到一个错误:Themethodadd(capture#5-of?superPerson)inthetypeListisnotappli