Tag: 抽象类

静态抽象方法解决方法

我想在abstract class创建一个abstract static method 。 我很清楚这个问题 ,这在Java中是不可能的。 什么是默认的解决方法/替代方式来思考问题/是否有一个选项可以为看似有效的示例(如下所示)执行此操作? 动物类和子类: 我有一个带有各种子类的基类Animal类。 我想强制所有子类能够从xml字符串创建一个对象。 对于这个,除了静态之外什么都没有意义呢? 例如: public void myMainFunction() { ArrayList animals = new ArrayList(); animals.add(Bird.createFromXML(birdXML)); animals.add(Dog.createFromXML(dogXML)); } public abstract class Animal { /** * Every animal subclass must be able to be created from XML when required * (Eg if there is a tag , bird would […]

使用java中的抽象类重载方法重载

abstract class Cell { public abstract Q getValue(); // abstract method } class Cell1 extends Cell { public Integer getValue() {// abstract method implementation return 0; } } class Cell2 extends Cell { public String getValue() { // abstract method implementation return “razeel”; } } class test { public static void main(String[] a) { Cell […]

使用许多子类重构抽象Java类

我正在寻找关于重构这种情况的最佳方法的想法(更好的设计,最小的努力)。 从以下示例开始抽象类(实际有更多字段,方法和抽象方法): abstract class Car { private int manufactureYear; // … many more fields that are hard to clone public Car(int manYear) { this.manufactureYear = manYear; } abstract public Color getColor(); abstract public int getNumCylinders(); } 有很多子类(比如100)扩展了这个类。 这些儿童课程被认为是汽车的“规格”。 以下是两个例子: class CarOne extends Car { private static Color COLOR = Color.Red; private static int CYLINDERS = […]

Android – 我们可以将OnClickListener扩展为另一个类吗?

public class A extends Activity { public void onCreate(Bundle b){ ~ Button b1 = (Button) findViewById(R.id.btn); b1.setOnClickListener(new B()); ~ } } public class B extends OnClickListener{ ~ do something public void onClick() etc.. } 有可能或有任何方法可以做到这一点吗?

抽象类可以有最终方法吗?

抽象类可以在Java中使用最终方法吗?

在JAVA中实例化一个抽象类?

我正在学习JAVA并继续阅读JAVA:Herbert Shildt的完整参考书 。 我在Java中学习了抽象类,但无法理解这一行背后的原因: 抽象类不能使用new运算符直接实例化。 我搜索了web和stackoverflow并跟着这些问题: 为什么我们不能在JAVA中实例化一个抽象类? 为什么我们不能在没有匿名类方法的情况下在java中实例化接口或抽象类? 在一个答案中,有人写道: 简单地说,在一个好的面向对象的程序中,你永远不应该想要实例化一个抽象类或接口。 如果你这样做,设计可能是错误的。 我不明白为什么重要的是不要为优秀的OOP设计实例化一个抽象类。 如果有人可以给出一个很好的解释,那么请帮忙。

Java未选中覆盖返回类型

我有一个包含以下组件的项目: public abstract class BaseThing { public abstract ThingDoer getThingDoer(); } public class SomeThing extends BaseThing { public ThingDoer getThingDoer() { return Things.getSomeThingDoer(); } } public class SomeOtherThing extends BaseThing { public ThingDoer getThingDoer() { return Things.getSomeOtherThingDoer(); } } public class Things { public ThingDoer getSomeThingDoer { return getThingDoer(SomeThing.class); } public ThingDoer getSomeOtherThingDoer { return […]

相当于C ++中的Java接口?

可能重复: 你如何在C ++中声明一个接口? 接口与c ++中的java一样? 我是一名学习C ++的Java程序员,我想知道C ++中是否存在类似Java接口的东西,即另一个类可以实现/扩展多个类的类。 谢谢。 ps新来这里告诉我,如果我做错了什么。

如何实现有效的Java特性?

如果这是不合适的,请告诉我(特别是Programmers.SE或者某些东西对于这个问题会更好。) 好的。 所以我有很多’特征’,我目前正在表达为接口。 我们称之为“可更新”和“可破坏”。 将它们表示为接口有一个缺点,我无法在所有“可破坏”组件之间共享行为; 另一方面,将这些表示为抽象类意味着我不能混合和匹配而不将混合特征明确定义为另一个抽象类(“UpdateableAndDestructible”),而且这感觉就像滥用抽象类function一样。 但是,如果没有更清晰的方法来解决这个问题,我可能最终会这样做。 对于这个难题,纯Java解决方案有哪些选择? 我是否有可能描述共享行为,然后按照我认为合适的方式进行混合和匹配,而不必明确描述我将要使用的每个排列?

JVM是否在内部实例化抽象类的对象?

我有一个抽象类及其具体的子类,当我创建子类的对象时,它会自动调用超级构造函数。 JVM是否在内部创建抽象类的对象? public abstract class MyAbstractClass { public MyAbstractClass() { System.out.println(“abstract default constructor”); } } public class ConcreteClass extends MyAbstractClass{ public static void main(String[] args) { new ConcreteClass(); } } 那么JVM中没有对象的构造函数是如何存在的? (如果是抽象类) 构造函数也会在创建对象后执行,然后不创建抽象类的对象如何执行默认构造函数? (这在Java Doc中提到)