Tag: 抽象

抽象类和匿名类

abstract class Two { Two() { System.out.println(“Two()”); } Two(String s) { System.out.println(“Two(String”); } abstract int display(); } class One { public Two two(String s) { return new Two() { public int display() { System.out.println(“display()”); return 1; } }; } } class Ajay { public static void main(String …strings ){ One one=new One(); Two two=one.two(“ajay”); System.out.println(two.display()); […]

处理谐音inheritance方法的规则是什么?

我试图理解Java如何处理在具体类inheritance(抽象或具体)具有来自不同类/接口的相同名称的方法时出现的歧义情况。 我无法找到一般规则,这就是为什么我一劳永逸地决定用一种实用的方法来花一些时间。 我考虑了8种不同的情况 抽象方法 非抽象方法 抽象类 接口 导致这个计划: +————————-+ | INTERFACE | +———-+————–| | abstract | non-abstract | | method | method | +———–+————–+———-+————–+ | | abstract | | | | ABSTRACT | method | 1a | 2a | | +————–+———-+————–+ | CLASS | non-abstract | | | | | method | 3a | 4a […]

Java克隆抽象对象

我想知道是否有任何方法可以做到以下几点。 我有一个抽象类, Shape ,以及它的所有不同的子类,我想重写克隆方法。 我想在方法中做的就是从当前的toString()创建一个新的Shape 。 显然我不能做以下因为Shape是抽象的。 还有另一种方法可以做到这一点,因为在每个子类中重写克隆只是为了简单的名称更改似乎没用。 public abstract class Shape { public Shape(String str) { // Create object from string representation } public Shape clone() { // Need new way to do this return new Shape(this.toString()); } public String toString() { // Correctly overriden toString() } }

为什么抽象方法不能同步?

我正在从CodeRanch读取一个线程,说抽象方法无法同步,因为抽象类无法实例化,这意味着没有锁定对象。 这没有意义,因为抽象类是子类的定义(契约)。 子进程的同步方法的抽象定义不需要锁定。 所有抽象标题都表明孩子必须同步这个方法。 我的逻辑是否正确? 如果没有,有人可以解释为什么我错了吗?

为什么我们需要Java中的抽象类?

为什么我们需要Java中的抽象类? 如果你永远不会把它变成一个物体,为什么一开始呢? 你如何使用它? 为什么会这样? 我用抽象方法想知道同样的事情。 我发现这似乎是一个类似的概念,有一个没有子类的超级类可能无关紧要。

桥接模式是否将抽象与实现分离?

我从不同的文章中学习了Bridge模式,并根据我的理解实现了它。 令我困惑的一件事是桥模式说 BridgePattern将抽象与其实现分离,以便两者可以独立变化 这句话是什么意思? 实现是在单独的jar中吗? 什么是独立声明的含义? 考虑提供的journaldev文章,详细说明答案。 任何帮助是极大的赞赏。

什么时候应该返回接口和具体类?

当我用Java编程时,我几乎总是出于习惯,写下这样的东西: public List foo() { return new ArrayList(); } 大多数时候甚至没有考虑过它。 现在,问题是:我是否应该始终将接口指定为返回类型? 或者建议使用接口的实际实现,如果是,在什么情况下? 很明显,使用界面有很多优点(这就是它的原因)。 在大多数情况下,库函数使用的具体实现并不重要。 但也许有些情况确实很重要。 例如,如果我知道我将主要访问列表中的数据,则LinkedList会很糟糕。 但是如果我的库函数只返回界面,我根本就不知道。 为了安全起见,我甚至可能需要将列表显式复制到ArrayList : List bar = foo(); List myList = bar instanceof LinkedList ? new ArrayList(bar) : bar; 但这似乎很可怕,我的同事可能会在自助餐厅里诽谤我。 理所当然。 你们有什么感想? 您的指导方针是什么?您何时倾向于抽象解决方案,何时会显示您的实施细节以获得潜在的性能提升?

类不是抽象的,并且不会覆盖Java中的错误

我在Java中遇到编译时错误: MyClass is not abstract and does not override abstract method onClassicControllerRemovedEvent( wiiusej.wiiusejevents.wiiuseapievents.ClassicControllerRemovedEvent) in wiiusejevents.utils.WiimoteListener) 这是class级: import wiiusej.WiiUseApiManager; import wiiusej.Wiimote; import wiiusej.wiiusejevents.physicalevents.ExpansionEvent; import wiiusej.wiiusejevents.physicalevents.IREvent; import wiiusej.wiiusejevents.physicalevents.MotionSensingEvent; import wiiusej.wiiusejevents.physicalevents.WiimoteButtonsEvent; import wiiusej.wiiusejevents.utils.WiimoteListener; import wiiusej.wiiusejevents.wiiuseapievents.DisconnectionEvent; import wiiusej.wiiusejevents.wiiuseapievents.NunchukInsertedEvent; import wiiusej.wiiusejevents.wiiuseapievents.NunchukRemovedEvent; import wiiusej.wiiusejevents.wiiuseapievents.StatusEvent; public class MyClass implements WiimoteListener{ public void onButtonsEvent(WiimoteButtonsEvent arg0) { System.out.println(arg0); if (arg0.isButtonAPressed()){ WiiUseApiManager.shutdown(); } } public […]