草庐IT

Inheritance

全部标签

java - 如何正确混合泛型和继承以获得预期的结果?

我的问题不容易用文字解释,幸运的是它不太难演示。所以,请耐心等待:publicinterfaceCommand{publicRexecute();//parameterRisthetypeofobjectthatwillbereturnedastheresultoftheexecutionofthiscommand}publicabstractclassBasicCommandimplementsCommand{}publicinterfaceCommandProcessor>{publicRprocess(Ccommand);//thisismyquestion...it'sille

Java:扩展内部类

我正在尝试了解Java中的扩展内部类。我已经四处阅读,但没有发现能完全回答我的问题。所以这里...我有...publicclassPie{protectedSlice[]slices;//PieconstructorpublicPie(intn){sliceGenerator(n)}privatevoidsliceGenerator(intn){slices=newSlice[n];finalfloatsweepAngle=360.0f/(float)n;floatstartAngle=0;for(inti=0;i然后我扩展这个...publicclassApplePieextends

java - 在这种情况下我应该使用继承还是组合?

我正在编写一个简单的游戏,许多游戏对象共享属性。我有两个可能的实现方式。第一种是使用继承,如下图所示:如您所料,粗体类是抽象类。分支是实际使用的派生类。请务必注意,这些类保存有关对象的数据,没有与它们关联的功能。例如,Troop和Vehicle有一个共同的接口(interface),它们都使用该接口(interface)来执行attack()和move()等操作。上面概述的类层次结构只是原始统计数据。此外,它们都是真正的ISA关系。第二个实现使用组合。与上面的类层次结构不同,每个抽象类都是包含某些数据成员的“模块”。所以SpecialAbility有一个名为PointsValueObj

java - Java 中的不变性、协变性和逆变性

Javalessonongenerics带我去variance概念。这让我有些头疼,因为我找不到一个非常简单的演示来说明它是什么。我读了几本similarquestionsonstackoverflow,但我发现它们对于Java学习者来说太难理解了。其实问题在于泛型的解释需要理解方差,而方差概念的论证很大程度上依赖于对泛型的理解。我有一些希望阅读this,但最后我分享了C.R.的感受:Thetitleremindsmeofthedayslearninggeneralrelativity.–C.R.Dec22'13at7:34四道理论题让我很困惑,我找不到很好的简单解释。以我目前的部分理

Java 继承 : the strict default-abstract and default-default conflict rules

谁能解释一下JLS§8.4.8.4中提到的“严格的default-abstract和default-default冲突规则”.它们是否在JLS中定义?我似乎找不到他们的定义。 最佳答案 我可能是错的,但这就是我对该部分的解释。“default-default”和“default-abstract”不是关键字。它们描述了与接口(interface)中的默认方法有关的两种不同的编译冲突规则。“default-default”与实现两个或多个接口(interface)的类有关,这些接口(interface)提供重写等效方法的默认实现,但不

<T extends A<T>> 和 Inheritance 形式的 Java 泛型

我对Java泛型有一个棘手的问题,或者我可能只见树木不见森林。我有如下所示的三个类A、B和C。abstractclassA>{abstractTsefl();};abstractclassB>extendsA{};classCextendsB{@OverrideCsefl(){returnthis;}}后来我有不同版本的B,也有不同版本的C。此外,我有一个功能测试应该接受B的列表(或其表亲之一)。或者一般来说,它应该接受从A继承的任何元素列表。不幸的是,我需要知道函数主体中列表元素的类型,即最上面的类型a.self可以返回(或类型T)。功能测试如下:static>voidtest(Li

Java - 将类型传递给父类(super class)静态方法

假设我有一个简单的类:publicclassTestClass{publicStringfield1="Field1";publicStringfield2="Field2";publicStringfield3="Field3";}我的项目中有多个pojo类,我希望能够将每个对象序列化为json。所以我创建了新的Serializer类(gson用于序列化):publicclassSerializer{publicStringtoJson(){returnnewGson().toJson(this);}}我的示例类扩展了Serializer:publicclassTestClassex

java - 使用 Guice,如何注入(inject)父类(super class)的构造函数参数?

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:GuicewithparentsclassBook{stringtitle;}classChildrensBookextendsBook{}classScienceBookextendsBook{}我想在子类中注入(inject)书名,例如,childrensBook应该被分配标题“AliceinWonderland”,ScienceBook应该被分配“OntheOriginof物种”。我如何使用Guice完成此操作?(注意我不想覆盖子类中的title字段)

java - 如何在实现接口(interface)但不扩展另一个类的 Java 类中引用 super 方法?

我有几个Java类,它们扩展了通用List接口(interface)的各种实现。他们只是记录添加到列表中的任何内容。LoggingArrayList如下所示。顾名思义,它扩展了ArrayList。LoggingLinkedList类是相同的,只是它扩展了LinkedList。我的主要目标是避免为了使用不同的基类而必须复制所有通用代码。我尽可能地坚持DRY原则(不要重复自己)。首先,请不要提出更好的日志记录方式。那根本不是我真正的应用。这只是演示我遇到的问题的简单方法。我有两个密切相关的问题。第一个是标题中的问题。如何在实现接口(interface)但不扩展另一个类的Java类中引用“s

java - 即使子类已经定义了构造函数,父类是否也总是需要一个默认的或无参数的构造函数?

我无法编译此代码。classHorse{privateintage;Horse(intage){this.age=age;}}classPonyextendsHorse{privateintage;Pony(intage){//herecompilercomplainsaboutnodefaultconstructorinparentclassthis.age=age;}}我知道当父类只有带有参数的构造函数时,您必须为子类定义一个构造函数,这就是我所做的。但是,编译器会提示父类没有默认构造函数。我得出父类总是需要默认或无参数构造函数的结论是否正确?如果我希望父类和子类只有带参数的构造函