Tag: 抽象

覆盖Java中的抽象generics方法

问题大纲 我正在弄清楚我当前项目基础的更好部分,我有一个想法,我决定测试有关覆盖抽象方法。 这是我在Java中的测试类: public abstract class Base { public abstract T test(); } 首次实施: public class Inheritor extends Base { @Override public Inheritor test() { return null; } } 第二次实施: public class Inheritor2 extends Base { @Override public T test() { return null; } } 问题1 为什么要编译? 我承认我很有希望它是合法的,因为它使合同不仅确保它返回一些扩展Base的东西,而且已经更加专业化了(因此我不需要在以后的某个地方将结果转换为我的专业类) )。 一切听起来不错但是我真的履行了基类强迫我的合同吗? 我在Inheritor中的重写实现失去了某些通用层,不是吗? 我在Inheritor中实现此方法并不会返回一个Inheritor2的实例,抽象方法似乎强制执行的可能性(因为它们都扩展了Base )。 我想指出文档中的一些摘录。 我的猜测是它与类型擦除有关,如果有人在他/她的答案中提到它的准确性会很好。 […]

如何使用generics并从父类inheritance而不会导致名称冲突?

我在Java中有一个名为Flight的父类。 我有子类: JetFlight , NormalFlight等inheritance自Flight 。 我希望所有子类都从Comparable接口实现compareTo 。 我希望它们从Flightinheritance,因为我想使用多态(例如,启动一个Flight数组并用JetFlight , NormalFlight等对象填充它)。 这是我父类的代码: public abstract class Flight { public abstract int compareTo(Object o); } 这是其中一个子类的代码: public class JetFlight extends Flight implements Comparable { private int flightTime; public JetFlight(int flightTime) { this.flightTime = flightTime; } public int compareTo(JetFlight j) { return this.flightTime – j.flightTime; } } 由于2个错误,此代码将无法编译: […]

使用与SomeAbstract

我正在从DotNet转向java,这种扩展的想法是新的。 我看过一些post,完全解释使用List List vs. List List vs. List ,但我猜测在generics中使用和不使用扩展之间没有区别。 真的吗? 如果使用抽象类作为父级,答案会改变吗? class My_AbstractExtends 与 class My_Abstract 编辑 按如下方式创建子类 class My_ChildExtends extends My_AbstractExtends 与 class My_Child extends My_Abstract

如何在Java中初始化Graphics对象?

这是代码: import java.awt.*; import java.applet.*; public class anim1 extends Applet{ public void paint (Graphics g) { g.drawString(“”,400,300); } public static void main(String ad[]) { anim1 a=new anim1(); Graphics g1; a.paint(g1); } } 它说g1没有初始化。 但是我如何初始化一个抽象类?

枚举抽象问题

我目前正在努力解决java抽象问题。 我有这样的事情: public interface State { }; public interface Dynamics { getObservationChance(State state, Observation observation); }; class SpecialState implements State { }; enum SpecialObservation() { FREE, WALL, etc. } class SpecialDynamics implements Dynamics { getObservationChance(State state, Observation observation) { // state should be SpecialState, observation should be SpecialObservation! } }; class Main { Main(State state, […]

如何在不使用抽象的情况下强制实现子类中的方法?

我想强制子类实现我母类的实现方法。 我看这个Java – 强制实现一个已实现的方法,但我无法将我的母类转换为抽象类。 public class myMotherClass { myMethod { …some code .. } } public class myClass extends myMotherClass { myMethod { … other code … } } 所以,在这个例子中,我想强制myClass实现myMethod。 对不起我的英语不好…

为什么你不能在Java中拥有受保护的抽象类?

我有一个抽象类,看起来像: abstract class AbstractFoo implements Bar { //Code goes here } 但是,当我尝试使AbstractFoo受保护时,我得到一个错误编译时错误,抱怨它是一个非法的修饰符。 protected abstract class AbstractFoo implements Bar { //Code goes here } 为什么你不能在Java中拥有受保护的抽象类? 编辑:我应该提一下,这不是vanilla Java,实际上是Blackberry / J2ME。

抽象类如何引用而不是对象?

请注意,您不能构造抽象类的对象,但仍可以使用类型为抽象类的对象引用。 当然,它引用的实际对象必须是具体子类的实例: Account anAccount; // OK anAccount = new Account(); // Error—Account is abstract anAccount = new SavingsAccount(); // OK anAccount = null; // OK 不明白为什么你可以有一个抽象类的对象引用…

由于某些中间构造函数调用,没有可用的PerfHelper类型的封闭实例

考虑以下代码: class abstract Normal1 extends Something { } class Outer { class abstract Inner extends Normal1 { } } class General extends Outer.Inner // Problem occurs at this { } 我得到的错误是“由于一些中间构造函数调用,没有可用的PerfHelper类型的封闭实例” 我的问题是我可以像上面那样扩展内部类吗?

如何在Java中实现抽象静态方法?

关于包含静态抽象Java方法的不可能性存在许多问题。 关于此的解决方法(设计缺陷/设计强度)也有很多。 但我找不到任何关于我即将陈述的具体问题。 在我看来,制作Java的人和很多使用它的人并没有像我和其他许多人那样思考静态方法 – 作为类函数或属于类的方法而不是任何对象。 那么还有其他一些实现类函数的方法吗? 这是我的例子:在数学中,一个组是一组对象,可以使用某些操作*以某种合理的方式相互组合 – 例如,正实数在正常乘法下形成一组( x * y = x × y ),并且整数集形成一个组,其中’乘法’运算是加法( m * n = m + n )。 在Java中对此进行建模的一种自然方法是为组定义接口(或抽象类): public interface GroupElement { /** /* Composes with a new group element. /* @param elementToComposeWith – the new group element to compose with. /* @return The composition of […]