草庐IT

overriding

全部标签

Java Iterator实现编译错误: does not override abstract method remove()

为什么会出现以下编译错误:LRIterator不是抽象的,不会覆盖java.util.Iterator中的抽象方法remove()注意,实现是针对链表的publicIteratoriterator(){returnnewLRIterator();}privateclassLRIteratorimplementsIterator{privateDLLNodeplace;privateLRIterator(){place=first;}publicbooleanhasNext(){return(place!=null);}publicObjectnext(){if(place==null)

java - 父类(super class)不调用重写的方法吗?

我有以下类(class):classfoo{publicvoida(){print("a");}publicvoidb(){a();}}classbarextendsfoo{publicvoida(){print("overwrittena");}}当我现在调用bar.b()时,我希望它调用foo中重写的方法a()。但是,它确实会打印“a”。 最佳答案 你的两个类在不同的包中吗?你的foo类方法是声明为public、protected、private还是packagelocal?显然,如果他们是私有(private)的,这将行不通。

java - 为什么 java.lang.Thread 在启动时不调用其显式 java.lang.Runnable 的 run() 方法?

Javadocs说明如果我们在创建新线程时提供一个Runnabletarget,该线程的.start()将运行run()方法提供的可运行。如果是这样的话,这个测试代码不应该打印“a”(而不是打印“b”)吗?publicclasstest{publicstaticvoidmain(String[]args){Runnabler=newRunnable(){@Overridepublicvoidrun(){System.out.println("a");}};Threadt=newThread(r){@Overridepublicvoidrun(){System.out.println("

java - 带有美元符号和数字 .class 的 java 文件名是什么意思 (name$1.class)?

这个问题在这里已经有了答案:javacompiledclassescontaindollarsigns(4个答案)关闭9年前。当我编译我的javaEnumDay时,它生成了他的Day.class文件和8Day$#.class文件,所以我想知道为什么编译器生成8个$#.class而不是7个,因为我有7个枚举常量,但有8个重写注释,我知道Dollar.class文件是为每个内部类或枚举常量生成的,但是八个.class文件的生成目的是什么?packagecom.kaissersoft.test.objective.one.three.enums;publicenumDay{SUNDAY(01

java - 试图了解 "both methods have same erasure, yet neither overrides the other"的情况

这个问题在这里已经有了答案:Methodhasthesameerasureasanothermethodintype(7个答案)关闭4年前。我正在尝试解决一个问题,我想出了这个解决方案(简化):packagehelp;publicclassProblem{privatestaticclassA{publicvoidfoo(Tt){}}privatestaticclassB{}privatestaticclassCextendsA>{publicvoidfoo(Tt){}}}它不会编译,因为“help.Problem.C中的foo(T)与help.Problem.A中的foo(T)冲突;

java - 用抽象方法覆盖默认接口(interface)方法

我觉得它很奇怪,想知道它是否是经常使用的东西。什么时候有用?publicinterfaceInterA{ObjectgetInfo()throwsException1;}publicinterfaceInterB{publicdefaultIntegergetInfo(Objects){return67;}}publicinterfaceInterCextendsInterA,InterB{@OverridepublicabstractIntegergetInfo(Objects);} 最佳答案 这在默认接口(interface)方

Java Swing : Extend DefaultComboBoxModel and override methods

我正在使用DefaultComboBoxModel在JComboBox中显示客户列表。该列表目前只显示他们的名字。我还想在DefaultComboBoxModel中引用每个客户,以便在选择名称时,它还包含对真实客户对象的引用。要实现这一点,我怀疑我必须扩展DefaultComboBoxModel并可能覆盖addElement()方法?或者我可以只添加一个新方法来存储我对客户的引用吗?如果是这样,我是否必须查看DefaultComboBoxModel的源代码以了解它如何存储元素?抱歉,如果这个问题令人困惑,但我无法弄清楚如何以正确的方式做到这一点。感谢阅读。

java - 我可以同步覆盖的方法吗?

我正在重写父类(superclass)中的一个方法,但是我希望这个方法是同步的。允许吗?有什么替代方案? 最佳答案 是的,这是允许的,因为它不会改变契约(Contract),而是会改变实现。认为您总是可以简单地添加一个同步块(synchronizedblock):synchronized(this){就在方法的开头,这将实现大致相同的结果。该方法中还可能有其他(可能隐藏的)更深的锁,这使得它真正成为实现的一部分,而不是API。 关于java-我可以同步覆盖的方法吗?,我们在StackOv

java - 覆盖的目的

这是一个非常幼稚的问题,但这里是:基类的重写方法意味着对子类的调用将调用派生的重写方法,对吗?这样,如果没有override注解,就会调用基类中的方法。因此,override方法将纯粹用于记录意图-在另一个方法上调用一个版本。是这样吗?这引出了以下问题:5-6个类可能派生但派生类中继承的方法未被覆盖的抽象类与这5-6个类使用的一个类(静态或无关紧要)之间有什么区别? 最佳答案 @Override注释仅用于在编译时捕获错误。它不会影响运行时的覆盖行为。这个想法是让编译器有机会通知您您的方法名称或签名是错误的。

java - Java中如何根据接口(interface)对象获取实现类名

我想从我的接口(interface)对象中获取实现类名——有什么方法可以做到这一点吗?我知道我可以使用instanceof来检查实现对象,但在我的应用程序中有将近20到30个类实现相同的接口(interface)来覆盖一个特定的方法。我想弄清楚它将调用哪个特定方法。 最佳答案 只需使用object.getClass()-它将返回用于实现您的接口(interface)的运行时类:publicclassTest{publicinterfaceMyInterface{}staticclassAClassimplementsMyInterf