草庐IT

Inheritance

全部标签

java - 接口(interface)继承 - 改变方法参数

我很难理解解释接口(interface)继承的java方式,例如:publicinterfaceModel{ModelgetModel();voidsetModel(Modelmodel);}publicclassBaseModelimplementsModel{@OverridepublicBaseModelgetModel(){returnnull;}//works@OverridepublicvoidsetModel(BaseModelmodel){}//compilationerror,itwantsModelinsteadofBaseModel}谁能解释为什么第一种方法有效而

Java - (匿名子类)在对象实例构造期间覆盖方法

我正在维护一些Java8代码,如下所示:ClassEntity{protectedModeltheModel;publicEntity(){init();}protectedvoidinit(){this.theModel=newModel();}}ClassModel{}ClassSubModelextendsModel{}main{EntitynewEntity=newEntity(){@Overrideprotectedvoidinit(){this.theModel=newSubModel();}};}代码目前可以正确编译和运行,但我现在需要更新它。我的问题是:在newEnti

java - 为什么 Java 不允许扩展数组类型

作为实验,我尝试像这样扩展int数组:publicclassIntArrayExtensionextendsint[]{//additionalfieldsandmethods.}在类本身中添加一些与排序、交换、子数组构建等相关的方法。但是我在编译时遇到了这个错误:IntArrayExtension.java:1:unexpectedtypefound:int[]required:classpublicclassIntArrayExtensionextendsint[]{^1error我很好奇:为什么Java不允许扩展数组? 最佳答案

Java 方法覆盖和变量阴影

publicclassCircle{publicfloatr=100;publicfloatgetR(){returnr;}}publicclassGraphicCircleextendsCircle{publicfloatr=10;publicfloatgetR(){returnr;}//Mainmethodpublicstaticvoidmain(String[]args){GraphicCirclegc=newGraphicCircle();Circlec=gc;System.out.println("Radius="+gc.r);System.out.println("Radi

Java:集合中的接口(interface)未被识别为参数

简单的设计和简单的代码但不编译:publicinterfaceInsertable{publicStringgetInsertStmt(Stringtable);}publicclassClassCanBeInsertedimplementsInsertable{publicStringgetInsertStmt(Stringtable){}}publicclassSomeClass{publicstaticvoidmain(){Listlist=newArrayList();SomeMethod(list);}privatestaticvoidSomeMethod(Listlist)

Java - 错误 : return type is incompatible

我正在学习Java。我试图运行代码,但出现此错误:returntypeisincompatible。显示错误的部分代码。classA{publicvoideat(){}}classBextendsA{publicbooleaneat(){}}为什么会这样? 最佳答案 这是因为我们不能在具有相同名称但返回类型不同的类中拥有两个方法。子类不能声明一个与父类中已经存在的方法具有相同名称但返回类型不同的方法。但是,子类可以声明一个与父类(superclass)具有相同签名的方法。我们称之为“覆盖”。你需要有这个,classA{publicv

java - 在java中访问继承的类变量

如果您从声明了某些成员变量的Activity继承,您如何在执行继承的子类中访问这些成员变量? 最佳答案 public或protected成员名称可以通过this.memberName从任何构造函数或非static访问方法或初始化程序。private或包级成员(从不同包中的子类访问)不能直接访问,需要通过非特权接口(interface)访问,例如publicsetter/getter。 关于java-在java中访问继承的类变量,我们在StackOverflow上找到一个类似的问题:

java - 你在子类中调用 super.finalize() 吗?

我(在某处)读到,当子类被垃圾回收时,不能保证调用父类的finalize(),这是否意味着大多数开发人员会覆盖finalize()在子类中调用super.finalize()? 最佳答案 Finalize不会自动为父类(superclass)调用。因此,如果您重写finalize,确保父类(superclass)得到清理的正确方法是protectedvoidfinalize(){try{//dosubclasscleanup}finally{super.finalize();}}请参阅这篇引用文章http://www.ibm.com

java - 为什么继承输出是意外的

classParent{privatevoidmethod1(){System.out.println("Parent'smethod1()");}publicvoidmethod2(){System.out.println("Parent'smethod2()");method1();}}classChildextendsParent{publicvoidmethod1(){System.out.println("Child'smethod1()");}publicstaticvoidmain(Stringargs[]){Childp=newChild();p.method2();}

java - 从 JVM 的角度来看,从原始数组继承是不可能的吗?

我的疑问是这个:在Java中,不允许从数组继承,即不能做这样的事情:classFloatVecextendsfloat[]{//Vectormethods.}FloatVecsomevec=newFloatVec()[]{1,2,3};//Witharrayinitializer.或者更好:classFloatVec3extendsfloat[3]{//Regularaccessor.publicfloatgetX(){returnthis[0];}//Orsay,makeitthe'this'implicitlikewithotherfields:publicvoidsetVec(f