Tag: inheritance

如何启用枚举inheritance

我正在编写一个库,它具有一组预定义的枚举值。 比方说,我的枚举如下所示。 public enum EnumClass { FIRST(“first”), SECOND(“second”), THIRD(“third”); private String httpMethodType; } 现在,使用此库的客户端可能需要添加更多值。 假设客户端需要添加CUSTOM_FIRST和CUSTOM_SECOND 。 这不会覆盖任何现有值,但会使枚举具有5个值。 在此之后,我应该可以使用 有5种不变的可能性。 实现这一目标的最佳方法是什么?

为什么Java禁止inheritance内部接口?

即为什么以下“循环依赖”不可能? public class Something implements Behavior { public interface Behavior { // … } } 由于接口不引用外部类,因此应该允许; 但是,编译器迫使我在类外定义那些接口。 这种行为有合理的解释吗?

为什么Java中的Object类包含受保护的方法?

为什么Java中的Object类包含受保护的方法,例如clone()和finalize() ,如果您使用或编写的所有类都inheritance了Object的实例方法?

反映DAO中inheritance关系的最有效方法?

使用MVC结构和业务对象 / DAO体系结构处理业务应用程序。 对于任何普通的业务对象,CRUD函数都相当简单。 但是,处理像“客户是用户”这样的亲子关系的最佳方式是什么? 我知道涉及以下课程: User, UserDAO, Customer, CustomerDAO Customer类可以很好地从Userinheritance,但是如何在DAO CRUD函数中最好地反映这一点?

inheritance与组合

可能重复: 喜欢构成而不是inheritance? 我想知道,为什么(或者在哪种情况下)应该考虑inheritance而不是组合,当它有这么多的缺点时: 如果我们实现/覆盖调用超类方法的子类中的方法,则无法保证我们的超类的另一个版本(可能是某些库)不会破坏我们的代码 如果在超类中出现一个具有与子类方法相同的签名的新方法,但是具有不同的返回类型,则我们的类将不会编译。 因此,我无法想象,地球上我们如何依赖它。 超类作者可能希望提高性能,我们的客户端代码可能会崩溃。 所以我的问题是: 这些问题是如何解决的(例如在标准Java库中)? 何时使用inheritance和组合?

如何声明一个抽象方法,以便参数类型(类)始终是Children类?

编辑:见底部 首先我在问这个问题之前搜索了一个答案,但正如你可以看到标题我不知道如何调用它,我会尽可能地编辑问题。 请原谅我这个。 我有以下抽象类: public abstract class ValidableDTO implements Serializable { public abstract boolean isValid(); public abstract boolean equals(ValidableDTO compared); // EDIT : new solution public abstract boolean equals(T compared); } 我想得到一个类似的实现: public class MyDTO extends ValidableDTO { private String myValue; //With a getter and setter of course public MyDTO() { // … } @Override […]

Java:inheritanceself的类

我知道这是毫无意义的:我发现它很有趣,我想更多地询问当你创建一个inheritance自身的类时会发生什么的机制,导致堆栈溢出崩溃。 令人惊讶的是,Java允许您开始构建这样的构造。 我只是在猜测,但JVM是否会将自己置于一个无限循环中,尝试在实例化之前解决该类,或者它是否实际上无休止地实现了该类的多个副本? 我应该更具体; 我正在使用内部类来从封闭类派生。 public class Outside { private int outsideValue; public class Inside extends Outside { private int insideValue; public Inside(int val) { insideValue = val; } } public Outside() { Inside o = new Inside(0); } } public class Main { public static void main(String args[]) { Outside o = new Outside(); […]

如何扩展使用FXML的自定义JavaFX组件

如果为视图使用FXML,如何正确扩展自定义JavaFX组件以添加或修改其GUI组件? 作为示例场景,假设我使用以下方法创建自定义JavaFX组件: SpecializedButton.java(控制器) package test; import java.io.IOException; import javafx.fxml.FXML; import javafx.fxml.FXMLLoader; import javafx.scene.control.Button; import javafx.scene.control.Label; import javafx.scene.layout.HBox; public class SpecializedButton extends HBox { @FXML private Button button; @FXML private Label label; public SpecializedButton() { FXMLLoader loader = new FXMLLoader( getClass().getResource( “SpecializedButton.fxml” ) ); loader.setRoot( this ); loader.setController( this ); try { loader.load(); } catch ( […]

Java中的抽象类和方法,inheritance

我有B类,它inheritance自A类。超类A是抽象的,包含一个抽象方法。 我不想在B类中实现抽象方法,因此我需要将类B声明为抽象。 声明B类抽象,两件事对我有用(程序编译并正确运行): 1.)我没有在B类中声明任何抽象方法,甚至认为该类是抽象的。 我认为这是有效的,因为该类inheritance了类A的抽象方法,这足以使类被声明为抽象:我们不需要在类中直接声明的任何其他抽象方法。 2.)我在类B中声明了与在类A中声明的相同的抽象方法。这是某种重写(?),与java中的重写不同(使用相同的头,但提供不同的实现) ),这里我只是再次使用该方法的相同标题。 这两件事都有效,我不确定它们是否都好,以及其中一些是否优先(更正确)。 这两种方式是否相同(它们对Java是否相同)? 这里我给出一些示例类,所以我的意思对你来说更清楚: 情况1。): public abstract class A { public abstract String giveSum(); } public abstract class B extends A { } 案例2): public abstract class A { public abstract String giveSum(); } public abstract class B extends A { public abstract String giveSum(); } 问候

Java:你怎么称这种多重inheritance歧义?

这是在Java中使用多接口inheritance的示例,这是一个问题。 请注意,我完全知道为什么会出现问题,这不是我的问题。 问题是关于如何命名这个特定的多接口inheritance歧义,如果它有一个名称。 例如,在C ++中,当您使用多个实现inheritance并且无法确定使用哪个重写方法时出现的歧义称为“钻石问题”: http://en.wikipedia.org/wiki/Diamond_problem 再一次,我知道这不是同一个问题:那不是重点。 关键是在之前的案例中创造了一个名称。 而且我想知道我将要描述的问题是否存在名称。 下面是另一种多重inheritance的示例,其中一个接口inheritance自另外两个具有不兼容方法返回类型的接口: interface A { void a(); Integer c(); } interface B { void b(); Long c(); } interface MI extends A, B {…} (使用’extends’关键字注意工作中的多个接口inheritance) 你做不到,因为: A型和B型不兼容; 两者都定义c()但具有不相关的返回类型 有没有一个名字来描述这种情况?