草庐IT

Inheritance

全部标签

java - 如何避免自定义 Java 异常类中的重复

我喜欢创建Exception类,其名称表明应用程序特定的问题被注意到和抛出。要定义它们,通常会定义一个新的类,其父类(superclass)是某种Exception类型。由于Exception父类有多个公共(public)构造函数,一般子类看起来是这样的:packagecom.example.exception;/***MyExceptionisthrownwhensomeapplication-levelexpectationisnotmet.*/publicclassMyExceptionextendsException{publicMyException(){super();}p

java - 如何推断类型,其中返回类型也是方法参数的上限和下限

假设我们有以下代码:classA{}classBextendsA{}classCextendsB{}publicstaticTtestMe(Listlist1,Listlist2){returnnull;}publicstaticvoidmain(String[]args){ListlistB=newArrayList();ListlistC=newArrayList();//Allthreevariantsarepossible:Aa=testMe(listB,listC);Bb=testMe(listB,listC);Cc=testMe(listB,listC);}问题是关于pub

java - 继承:有没有办法发现调用方法的类?

使用这段代码:classSuperTest{SuperTest(){whoAmI();}voidwhoAmI(){System.out.println(getClass().getName());}}classTestextendsSuperTest{Test(){whoAmI();}}newTest()将打印"Test"两次。作为初学者,我期望输出为"SuperTest/Test"。我现在明白为什么这是不可能的,以及为什么隐式this将仅引用子类型。但是我找不到whoAmI()应该是什么来实际打印输出SuperTest/Test。换句话说:whoAmI()如何访问它“从中调用”的类型

java - 共享四边形基的方形/矩形(具有约束不变量)之间的继承问题

我有一个接口(interface)Polygon,然后我有一个类Quadrilateral。然后,我有两个类,Square和Rectangle,它们扩展了Quadrilateral。四边形由实例变量sideA、sideB、sideC和sideD组成。它包含方法area()和perimeter()来计算任何四边形的面积和周长。考虑到这一点,Square类有一个实例变量lengthOfSides,而Rectangle类有两个实例变量,length和width。由于Quadrilateral中的方法area和perimeter可以用于计算任何四边形的面积和周长,包括正方形和矩形,我认为最好只

java - 使用 super() 时幕后发生了什么

我很想知道当您使用super()调用父类(superclass)的构造函数时,幕后实际发生了什么。当一个对象从子类实例化时,子类是否继承父类(superclass)对象?或者它是如何工作的?这是我的引用代码:publicclassBicycle{//DeclaringbicyclesstatespublicintmovSpeed=0;publicintcadence=0;publicintcurGear=0;//ClassconstructorpublicBicycle(){}//ClassconstructorwithparamspublicBicycle(intmovSpeed,i

java - Java抽象方法中使用通配符和声明泛型的区别

我试图理解Java中的泛型类型,理论上它看起来可以理解,但是当我需要将它应用到实际代码时我遇到了问题。我想声明将返回泛型类型的抽象方法。假设我有一些名为Magicable的空接口(interface),并且有2个类实现它:Magican和Witch。现在我想知道这3个声明之间有什么区别:/*1*/protectedabstractListgetMagicables();/*2*/protectedabstractListgetMagicables();/*3*/protectedabstractListgetMagicables();在第一种情况下,当我想在扩展抽象类的某个类中实现此方

java - Java 和 Hibernate 的继承 - 更新类型转换

我的类(class)有以下层次结构@Entity@Table(name="Parent")@Inheritance(strategy=InheritanceType.SINGLE_TABLE)publicclassParent{}@Entity@DiscriminatorVlaue("FirstChild")publicclassFirstChildextendsParent{}@Entity@DiscriminatorVlaue("SecondChild")publicclassSecondChildextendsParent{}这会按预期创建一个表Parent。我的应用中的一些业务

java - 在 Hibernate 中映射多级继承

目前我有这样的结构:A|+--B|+--C它使用连接表为每个子类映射一个表。由于历史原因,我也使用了鉴别器,所以目前的情况如Section9.1.3oftheHibernatemanual所述。.问题:如何为这样的结构扩展映射:A|+--B|||D|+--C我可以一个在hibernate映射中?什么我需要什么? 最佳答案 未测试但是,如果您使用的是hibernate3,则根据您发布的链接 关于java-在Hibernate中映射多级继承,我们在StackOverflow上找到一个类似的问

Java内部类和继承

我正在阅读ThinkingInJava,我遇到了一个小问题。我正在做第8章的练习12。Createaninterfacewithatleastonemethod,initsownpackage.Createaclassina>separatepackage.Addaprotectedinnerclassthatimplementstheinterface.Inathird>package,inheritfromyourclassand,insideamethod,returnanobjectoftheprotected>innerclass,upcastingtotheinterfac

java - 使用 Scala Trait 扩展 Java 类

我想定义一个类ContextItem作为java类Predicate的扩展,具有特征Confidence。置信度是一个简单的特征,它只是向它扩展的任何内容添加一个置信度字段。traitConfidence{defconfidence:Double}我通过简单的说明定义我的ContextItem类:classContextItemextendsPredicatewithConfidence{}但是尝试编译这个会产生...com/slug/berds/Berds.scala:11:error:overloadedmethodconstructorPredicatewithalternati