草庐IT

overriding

全部标签

Java 接口(interface) : Inheriting, 覆盖和重载方法

在KenArnold、JamesGosling、DavidHolmes的“THEJava™ProgrammingLanguage,FourthEdition”中提到:段落:(4.3.2)“类似地,如果一个接口(interface)继承了多个具有相同签名的方法,或者如果一个类实现了包含具有相同签名的方法的不同接口(interface),则只有一个这样的方法。这个方法的实现最终由实现接口(interface)的类,那里没有歧义。如果方法具有相同的签名但返回类型不同,则其中一个返回类型必须是所有其他返回类型的子类型,否则会发生编译时错误。实现必须定义一个返回该公共(public)子类型的方法

java - Eclipse 忽略不正确的@Override 注释

出于某种原因,我的一个eclipse安装忽略了错误设置的@Override注释。例如,如果我将@Override放在未被覆盖的方法上,它就会完全忽略它。关于如何将其恢复到显示错误注释方法错误的状态的任何想法? 最佳答案 @Override的定义在Java6(andunfortunatlywithoutproperdocumentation)中略有变化,其中实现接口(interface)方法的方法上的@Override注释是有效的。在Java5中,这被认为是错误。 关于java-Eclip

java - @Override 在此 java 代码中是什么意思?

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:WhendoyouuseJava's@Overrideannotationandwhy?Java,Whatdoes@Overridemean?我正在检查DroolsPlanner示例源代码,我遇到了这样的代码:@OverrideprotectedSolvercreateSolver(){XmlSolverConfigurerconfigurer=newXmlSolverConfigurer();configurer.configure(SOLVER_CONFIG);returnconfigurer.build

java - 为什么类型兼容性在覆盖方法时也不适用于原语?

当我们说基类Base及其派生类Derived是类型兼容时,我们指的是Base引用可以引用Derived实例。IE。Baseb=newDerived();相反,由于类型不兼容,因此需要进行强制转换。现在这个概念是否不适用于原始类型?我是说这个shortshortNumber=10;intintNumber=shortNumber;对我来说似乎是同一件事(因为也不需要强制转换,short和int都是整数类型)。因此,当覆盖基类中的方法时,为什么返回类型与基类的返回类型相同或至少类型兼容是可以接受的,但这也不适用于整数类型?例如。为什么这是NotAcceptable?publicclassP

java - 覆盖 java.lang.Enum.values() 上的 Javadoc 注释

关于方法java.lang.Enum我有一个非常具体的问题.values().我想覆盖它的javadoc。非常准确地说,当前的javadoc是在我创建自己的枚举之后:publicstaticMyClass.MyEnum[]values()...Thismethodmaybeusedtoiterateovertheconstantsasfollows:for(MyClass.MyEnumc:MyClass.MyEnum.values())System.out.println(c);Returns:...但在我的公司System.out调用被认为是不好的做法,所以我不希望它被显示出来。我的

Java - 错误 : return type is incompatible

我正在学习Java。我试图运行代码,但出现此错误:returntypeisincompatible。显示错误的部分代码。classA{publicvoideat(){}}classBextendsA{publicbooleaneat(){}}为什么会这样? 最佳答案 这是因为我们不能在具有相同名称但返回类型不同的类中拥有两个方法。子类不能声明一个与父类中已经存在的方法具有相同名称但返回类型不同的方法。但是,子类可以声明一个与父类(superclass)具有相同签名的方法。我们称之为“覆盖”。你需要有这个,classA{publicv

java - 如何确保在类中重新实现 toString() 方法?

假设我有一个接口(interface)和许多实现该接口(interface)的类。我想在每个类中强制覆盖toString()的默认实现(也就是说,如果某些类不覆盖它,那将导致编译错误)。有可能实现吗?在接口(interface)体中声明publicabstractStringtoString();,带或不带@Override注解,都是合法的,但没有任何作用。 最佳答案 是的,有点。protectedabstractStringinternToString();然后@OverridepublicStringtoString(){ret

java - 使用 protected 访问修饰符覆盖没有访问修饰符的方法

当您覆盖方法时,您不能降低继承方法的可见性。根据下表,protected比nomodifier更易于访问:|Class|Package|Subclass|World————————————+———————+—————————+——————————+———————public|y|y|y|y————————————+———————+—————————+——————————+———————protected|y|y|y|n————————————+———————+—————————+——————————+———————nomodifier|y|y|n|n————————————+—————

java - Vararg 方法覆盖/重载混淆

程序一classB{publicvoidm1(intx){System.out.println("Superclass");}}classAextendsB{publicvoidm1(int...x){System.out.println("Subclass");}}classtest1{publicstaticvoidmain(Stringargs[]){Bb1=newB();b1.m1(10);Aa=newA();a.m1(10);Bb2=newA();b2.m1(10);}}输出:super类父类(superclass)(无法理解为什么父类(superclass)?!)父类(su

java - 在 Java 中重载和覆盖

我知道如何重载方法,以及如何覆盖方法。但是有可能同时重载和覆盖一个方法吗?如果是,请举例说明。 最佳答案 重载和覆盖是互补的东西,重载是方法名相同但参数不同,覆盖是子类中方法名相同,参数相同。所以不可能同时发生重载和覆盖,因为重载意味着不同的参数。例子:classA{publicvoiddoSth(){///}}classBextendsA{publicvoiddoSth(){/*methodoverriden*/}publicvoiddoSth(Stringb){/*methodoverloaded*/}}干杯!