草庐IT

Inheritance

全部标签

Java 构造函数和字段初始化顺序

我知道Java对象构造函数会隐式初始化其实例的非静态字段。但是,我不确定这在类层次结构中发生的顺序。例如:abstractpublicclassAbstractPieceSequenceimplementsPieceSequence{privateTetrominocurrent;privateTetrominopreview;publicAbstractPieceSequence(){advance();}@Overridepublicfinalvoidadvance(){if(preview==null){current=getNextPiece();preview=getNext

java - 在继承类中使用私有(private)变量 - Java

需要对私有(private)变量和继承有更多的了解。早些时候我的理解是如果一个类中有字段并且当我继承该类时,不受访问(私有(private)变量)限制的字段将存在于继承的类中。但如果有公共(public)g/setter方法,我可以在基类中使用私有(private)变量。我如何想象基类中的私有(private)变量? 最佳答案 classA{privateinta;publicA(inta){this.a=a;}publicintgetA(){returna;}}classBextendsA{publicB(intb){super(

java - 是否可以在 Java 中扩展没有构造函数的类?

出于单元测试的目的,我正在尝试编写mockobject没有构造函数的类。这在Java中甚至可能吗,该类是不可扩展的吗? 最佳答案 没有构造函数的类有一个隐式公共(public)无参数构造函数,是的,只要它不是最终的,它就可以被子类化。如果该类只有私有(private)构造函数,那么不,它不能。 关于java-是否可以在Java中扩展没有构造函数的类?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/q

java - 即使我已经扩展了类,为什么我不能访问 protected java 方法?

这是protected方法的文档:/**ConvertsjmusicscoredataintoaMIDISequence*/protectedjavax.sound.midi.SequencescoreToSeq(Scorescore)我创建了这个小类来扩展scoreToSeq方法来自的类:publicclassMidiSequenceextendsMidiSynth{publicSequencegetSequence(Scorescore){MidiSynthsynth=newMidiSynth();Sequencesequence=null;try{//HereIgettheerr

java - 为什么要为抽象类或接口(interface)类烦恼呢?

这一直让我感到困惑,为什么最好有一个抽象类。所以可以说我必须计算不同形状(圆形,矩形)的面积。我被教导最好有一个抽象/界面形状,然后是Rectangle、Circle等类来扩展它。我做了以下代码abstractclassShape{abstractintgetArea();}classRectangleextendsShape{privateintwidth;privateintheight;publicRectangle(){this.width=width;this.height=height;}//getsetmethodsommitedpublicintgetArea(){re

java - 在 Java 中作弊单继承?

我听说在Java中有一种方法可以欺骗单继承并实现多继承。有谁知道如何实现这个(不使用接口(interface))?只是出于好奇;-) 最佳答案 当然可以,但这很棘手,您真的应该考虑一下这是否是您想要的方式。这个想法是使用基于范围的继承和基于类型的继承。这是说出于内部目的,内部类“继承”外部类的方法和字段的类型谈话。它有点像混合,外部类混入内部类,但不安全,因为您可以更改外部类的状态并使用其方法。GiladBracha(主要的Java语言设计者之一)写了一个paper讨论那个。所以,假设你想在一些不相关的类之间共享一些内部使用的方法(

java - Java继承中的私有(private)成员

有人告诉我,对于Java子类,它可以继承其父类(superclass)的所有成员。那么这是否意味着私有(private)成员(member)呢?我知道它可以继承protected成员。谁能给我解释一下。我现在完全糊涂了。 最佳答案 不,私有(private)成员不继承,因为私有(private)成员的范围仅限于定义它的类.只有public和protected成员被继承。来自JavaDocumentation,PrivateMembersinaSuperclassAsubclassdoesnotinherittheprivatemem

java - 在不使用 final 的情况下停止继承

除了将类声明为final或将其构造函数声明为私有(private)之外,还有其他方法可以停止类的继承吗? 最佳答案 评论//Donotinheritplease 关于java-在不使用final的情况下停止继承,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/451182/

java - 使用接口(interface) Class<T> 作为键来获取具体的实例值?

我有以下无法从Map检索值的测试用例:packagetests;importjava.util.HashMap;importjava.util.Map;publicclassClassTest{interfaceA{}interfaceBextendsA{}interfaceCextendsA{}classDimplementsB{}classEimplementsC{}publicClassTest(){Map,A>map=newHashMap();Ad=newD();Ae=newE();map.put(d.getClass(),d);map.put(e.getClass(),e);

java - 在这种情况下如何避免代码重复?

我的项目是关于在java中实现超图我的hyperGraph包含各种类型的hyperEdge,具体取决于我拥有的顶点类型顶点类型:图像,标签...HyperEdge=Homogeneous(关联相同类型的顶点)/Heterogeneous(关联不同类型的顶点)HomogeneousHyperEdge=Image-imageHyperEdge/Tag-taghyperEdge这是一个快速绘制的UML图这是我的代码publicinterfaceHomogenousHyperedge,L>extendsHyperedge{publicabstractListsearchNearstNeighb