草庐IT

Inheritance

全部标签

java - 泛型接口(interface)方法签名 "incorrect"

我很难想出这个标题,所以请原谅我。我有一个具有以下方法的接口(interface):publicinterfaceAlgorithm{publicSet>map(intnumPartitions);publicFreduce(Set>partitions);}和一个实现Algorithm的类使用以下方法:publicclassLinearSearchimplementsAlgorithm,Integer>{@OverridepublicSet>map(intnumPartitions){returnnull;}@OverridepublicIntegerreduce(Set>parti

java - 使用 Java 中的组合和接口(interface)进行设计

我针对一个问题设计了以下内容:classAnimal{//...}classGuppyextendsAnimal{...}classPigeonextendsAnimal{...}classTailedAnimalextendsAnimal{//...}classDogextendsTailedAnimal{...}classCatextendsTailedAnimal{...}classHornedAnimalextendsAnimal{//...}classRamextendsHornedAnimal{...}publicstaticvoidmain(String[]args){A

java - 我可以在不使用 'default' 的情况下将继承限制为包吗?

我有一些类需要能够在同一个包中扩展。但我不希望我的包之外的任何其他人扩展我的类(class)。其他包中的类需要能够调用我的类,所以我不能使用“默认”。有什么方法(可能是通过接口(interface))可以实现这个目标吗? 最佳答案 如果你将你的构造函数包放在本地,它只能在同一个包中扩展,但是公共(public)成员可以在任何类中访问,如果它是一个公共(public)类。 关于java-我可以在不使用'default'的情况下将继承限制为包吗?,我们在StackOverflow上找到一个类

java - 为什么Java中可以将父类(super class)初始化为子类?

简而言之,这是如何以及为什么可能的:Objectobj=newMyClass();Object是所有对象的父类(superclass),因此MyClass是Object的子类。一般来说,在Java中,为什么可以在父类中使用子类的构造函数?我明白它怎么可能反过来,因为子类拥有父类的所有变量/方法,所以当你初始化它们时,你只是在初始化父构造函数中指定的变量,这些变量按定义存在于child。问题是,当你反过来时,它不一定是真的。子项可以拥有父项没有的变量,那么当父项一开始甚至没有变量时,如何将子项构造函数与父项一起使用?这个特性在开发中有什么用?我想如果你想要一个B类的实例,你会把它声明为B

java - 使用 Java 抽象方法中的继承类识别方法的签名

我知道这是一个非常简单的问题,但是我已经在Python中工作了相当长的时间,现在我必须回到Java,我似乎有问题改变芯片并且围绕着Java的基本多态性。是否可以使用其中一个继承类作为参数来覆盖(准确地说是实现)Java中类的抽象方法?让我用一个非常简单的例子来解释(遵循“几乎官方”example形状)classShape{}classCircleextendsShape{}classTriangleextendsShape{}abstractclassShapeDrawer{abstractvoiddraw(Shapes);}classCircleDrawerextendsShapeD

java - 我可以为每种不同类型的继承类拥有不同的静态变量副本吗

我想根据类的类型使用不同值的相同静态变量。所以我会publicclassEntity{publicstaticBitmapsprite;publicvoiddraw(Canvascanvas,intx,inty){canvas.drawBitmap(sprite,x,y,null);}}publicclassMarineextendsEntity{}publicclassGenestealerextendsEntity{}然后在我的主程序中去:Marine.sprite=//LoadspriteforallinstancesofMarineGenestealer.sprite=//Lo

java - 如何从子类调用重写的父类方法?

如果我有一个子类,其中包含我从父类覆盖的方法,并且在非常特殊的情况下我想使用原始方法,我该如何调用这些方法? 最佳答案 调用superclassA{intfoo(){return2;}}classBextendsA{booleansomeCondition;publicB(booleanb){someCondition=b;}intfoo(){if(someCondition)returnsuper.foo();return3;}} 关于java-如何从子类调用重写的父类方法?,我们在S

java - JSF 2 : Is it possible to inherit @ManagedBean?

我有一个Bean,有一个@ManagedBean注释,定义如下:@ManagedBean@SessionScopedpublicclassBeanimplementsSerializable{/****/privatestaticfinallongserialVersionUID=1L;}Now,Ihaveanotherbeandefinedlikethis:publicclassFooBeanextendsBean{//properties,methodshere...}当我尝试在我的JSF页面中引用FooBean时,出现以下错误:目标无法到达,标识符“fooBean”解析为null

java - 在 Java 中,如果子类用实例子变量隐藏静态父变量,那么继承方法将使用哪个变量?

这可能是一件坏事,如CanparentandchildclassinJavahavesameinstancevariable?中所讨论的那样.(如果更改父变量名称怎么办?那么它将不再被隐藏。)但是,我仍然很好奇静态/非静态不同的变量是否会相互隐藏。一方面,我希望它们是相同的变量名,因此会被隐藏,但另一方面,编译器似乎可能会根据静态来区分两者。 最佳答案 根据Java语言规范:如果该类声明了一个具有特定名称的字段,则该字段的声明被认为隐藏了父类(superclass)和该类的超接口(interface)中具有相同名称的任何和所有可访问

java - 为什么类型兼容性在覆盖方法时也不适用于原语?

当我们说基类Base及其派生类Derived是类型兼容时,我们指的是Base引用可以引用Derived实例。IE。Baseb=newDerived();相反,由于类型不兼容,因此需要进行强制转换。现在这个概念是否不适用于原始类型?我是说这个shortshortNumber=10;intintNumber=shortNumber;对我来说似乎是同一件事(因为也不需要强制转换,short和int都是整数类型)。因此,当覆盖基类中的方法时,为什么返回类型与基类的返回类型相同或至少类型兼容是可以接受的,但这也不适用于整数类型?例如。为什么这是NotAcceptable?publicclassP