草庐IT

Inheritance

全部标签

Java 实际参数与形式参数不匹配,但它们匹配吗?

我有一个扩展实体的播放器类:玩家:publicclassPlayerextendsEntity{publicPlayer(charinitIcon,intinitX,intinitY){//emptyconstructor}...实体:publicEntity(charinitIcon,intinitX,intinitY){icon=initIcon;x=initX;y=initY;}...这几乎是你所期望的,但是在编译时我得到了一个错误Player.java:2:error:constructorEntityinclassEntitycannotbeappliedtothegiven

java - 当方法的签名定义为 Collection<class> 时,为什么方法不能采用 Collection<subClass>

我有一个获取SResource对象列表的方法publicstaticListlistTriples(Listsubjects){//...dostuff}为什么我不能这样做ListresultsAsList=newArrayList();resultsAsList.addAll(allResults.keySet());//Icouldpossiblenotuselistsandjustusesetsandthereforegetridofthisline,butthatisadifferentissueListtriples=newArrayList();triples=Triple

java - 使用 List<?> 成员定义抽象泛型类

即使尝试为此想出一个干净的标题也是一个挑战。基本思想是定义两个父类(superclass):一个用于“子”项目,其成员引用其“父”,另一个用于包含子对象的“父”列表。从child->parent和parent->child的链接是对称的。每个父/子父类(superclass)都有定义和实现附加功能的子类。总有一个并行子类使得child与parent配对.即parent将只包含child引用资料,以及child只会引用parent-子类型之间没有“交叉”。我该如何表示呢?几天来我一直坚持这个问题,我对多级嵌套泛型类型的创意越多,它就越糟糕。这就是我想要做的:abstractclassCh

java - 当子类和父类都是内部类时,Java 中的继承行为

这个问题在这里已经有了答案:Whydoinnerclassesmakeprivatemethodsaccessible?(4个答案)关闭6年前。为什么下面代码中子类Child中可以看到父类Base的私有(private)方法?publicclassTrial{classBase{privatevoidfoo(){}}classChildextendsBase{privatevoidfunc(){super.foo();}}}如果Base和Child类不是内部类,那将是不可能的。为什么内部类会有这种行为?

Java泛型继承警告

下面例子中的foo方法给了我们一个警告,而bar没有?publicclassX{staticclassY{}staticclassZextendsY{}Yy=newY();Tfoo(){return(T)y;//warning-UncheckedcastfromX.YtoT}Zbar(){return(Z)y;//compilesfine}} 最佳答案 类型T在编译时被删除为Y,这就是泛型在Java中的工作方式。因此,当在运行时执行转换时,T的类型不可用,它只是字节码中的Y。bar()可以正常编译,因为所有类型信息都可用(转换会失败

java - 有没有一种特定的方法可以将父类(super class)的某些功能赋予某个子类?

问题我正在尝试创建一个应用程序,其中的对象类可以实现一些来自可用操作总池的操作。最终目标是没有任何代码重复,并尽可能遵守OOP法则。更详细地说,我正在尝试使用Lucene制作一个搜索引擎。卢森使用许多索引。我已经实现了一个简单的结构,其中不同的索引对象继承父类的方法。问题是,无论在该父类中实现什么方法,它都会自动可供所有子类使用。我想为用户提供选项,以确定他是否想进行短语搜索、术语搜索或任何其他可用于that特定索引的内容。问题是,例如,某些索引不应提供进行短语搜索的选项。最初的想法我想过实现一些接近复合模式的东西,正如GoF所描述的那样。我会将搜索操作(例如术语搜索、短语搜索)实现为

Java ORM : Multiple (interface) inheritance

我想使用Java的ORM框架之一将域模型映射到关系数据库。不幸的是,它们似乎都没有充分支持实现多个接口(interface)的类。假设我想映射如下内容:publicinterfaceQuotable{}publicinterfaceTradable{}//StockIndexonlyimplementsQuotableasitcannotbetradedirectlypublicclassStockIndeximplementsQuotable{}//Stockimplementsbothinterfacesastherearemarketquotesandcanbetradedpub

java - 从子类更改父类(super class)实例变量的值

我发现我可以在子类中这样做:ParentClass.variable=value;但有人告诉我,更好的做法是使用get/set方法,而不是直接访问类外的变量。尽管这是针对我在另一个类中有该类的实例的情况,而不是针对子类和父类(superclass)。那么有没有更好的方法来做到这一点,哪种方法通常被认为是最佳实践? 最佳答案 您有很多选择。super.field=x您必须有权访问该字段才能执行此操作field=x您必须有权访问该字段才能执行此操作。您也不能在child中有另一个字段,否则只会设置child的字段。setParentFi

java - 这个 Java 泛型范例是做什么的,它叫什么?

我正在查看一些具有以下形式的Java类:publicabstractclassA>implementsComparable{publicfinalintcompareTo(Eother){//etc}}publicclassBextendsA{//etc}publicclassCextendsA{//etc}我在这里使用“Comparable”只是为了说明通用参数“E”的可能用法。这种泛型/继承的用法有名字吗?它有什么用?我的印象是,这允许抽象类提供一个方法(例如compareTo)的通用实现,而不必在子类中提供它。但是,在此示例中,与继承方法不同,它将子类限制为在同一子类的其他实例上

java - 实现不兼容的接口(interface)

这个问题在这里已经有了答案:interfaceandinheritance:"returntypeintisnotcompatible"(4个答案)关闭9年前。我正在尝试构建一个实现Queue和Map的类。两个接口(interface)都定义了remove(Object)方法,但返回类型不同:publicinterfaceCollection{//QueueextendsCollection,whichhastheproblemmethodpublicbooleanremove(Objecte);//...}publicinterfaceMap{publicVremove(Kkey);