草庐IT

继承权

全部标签

java - 为什么 JUnit 5 测试不从抽象类继承 @Test 注解?

我刚刚意识到(在将遗留代码从JUnit4迁移到JUnit5时)我们的一些测试方法没有执行,因为它们没有@Test注释。他们没有它,因为它们覆盖了抽象父类(superclass)(存在注释的地方)的方法。我可以通过向每个方法添加@Test轻松解决此问题。但我想知道这是否是预期的行为。它从JUnit4更改为5,但我在officialJUnit5UserGuide中找不到任何相关信息或其他任何地方。根据thisquestion,注解通常不被继承。但似乎这是在新的JUnit版本中有意更改的。(或者我错过了什么?)抽象测试类importorg.junit.jupiter.api.Test;abs

java - JPA @Entity 继承

我研究JPA/Hibernate@Entity继承已有一段时间了,但似乎找不到任何可以解决我想要实现的目标的东西。基本上,我希望能够根据需要定义一个包含所有列和表映射的@Entity。然后,我希望能够使用在每个“子实体”的主体中定义的不同组的@Transient方法在许多不同的位置扩展@Entity。这是我正在努力实现但迄今为止没有成功的基本示例:@Entity@Table(name="mountain")publicclassMountainEntityBaseimplementsSerializable{publicIntegermountainId=0;publicInteger

java - Java中的继承和重载

我正在为考试而学习,我需要一些帮助来理解以下代码片段中发生的事情。classA{publicvoidmethod1(AX){System.out.println("A");}}classBextendsA{publicvoidmethod2(){System.out.println("B");}}classCextendsB{publicvoidmethod1(Ax){System.out.println("C");}}classDextendsC{publicvoidmethod1(Dx){System.out.println("D");}}publicclasstest{publi

java - 带有类型列表和继承的方法

我在使用从另一个(类型化)类继承的类型化List参数的方法时遇到了一些麻烦。让我们保持简单:publicclassB{publicvoidtest(Listi){}}B类有一个无用的泛型T,而test()需要一个整数列表。现在如果我这样做:publicclassAextendsB{//don'tcompile@Overridepublicvoidtest(Listi){}}我收到“类型A的方法测试(列表)必须覆盖或实现父类(superclass)型方法”错误,这是不应该发生的。但是删除列表的类型是可行的...尽管它不依赖于泛型类。publicclassAextendsB{//compi

java - 静态方法和继承的返回类型中的泛型

静态方法的返回类型中的泛型似乎与继承相处得不好。请看下面的代码:classClassInfo{publicClassInfo(Classclazz){this(clazz,null);}publicClassInfo(Classclazz,ClassInfosuperClassInfo){}}classA{publicstaticClassInfogetClassInfo(){returnnewClassInfo(A.class);}}classBextendsA{//Error:ThereturntypeisincompatiblewithA.getClassInfo()public

java拷贝构造函数和继承

经过一番搜索后,我没有找到关于复制构造函数和继承的问题的任何好的答案。我有两个类(class):用户和实习生。Trainee继承自User,Trainee增加两个String参数。现在我设法制作了User的复制构造函数,但我对Trainee的复制构造函数不满意。User拷贝构造函数的代码是这样的:publicUser(Userclone){this(clone.getId(),clone.getCivilite(),clone.getNom(),clone.getPrenom(),clone.getEmail(),clone.getLogin(),clone.getTel(),clon

Java 10 'var' 和继承

在查看var功能后,可以看到here:我在使用JDK10设置我的Eclipse/IntelliJIDEAIDE时遇到了困难,因此我向拥有Java10工作环境的StackOverflow用户寻求帮助。考虑以下几点:publicclassA{publicvoidsomeMethod(){...}}publicclassBextendsA{@OverridepublicvoidsomeMethod(){...}}.........varmyA=newA();//WorksasexpectedmyA=newB();//Expectedtofailincompilationduetovarbei

java - 继承后保护成员行为。

我对protected标识符有一些疑问。在K.Sierra的SunCertifiedJavaProgrammerStudyGuide第一章中,我找到了以下信息:“一旦包外的子类继承了protected成员,该成员(由子类继承)对子类之外的任何代码都是私有(private)的,子类的子类除外。”我提供了反射(reflect)上述陈述的示例代码,这对我来说是绝对清楚的。//Parentclasspackagepackage1;importpackage2.Child;publicclassParent{protectedinti=5;}//Childclasspackagepackage2

以封装、多态和继承为特色的 Java 示例?

我需要制作一个项目,该项目具有使用Java的面向对象编程的所列特征。有人可以查看我的快速示例程序以确认我了解这些特性是如何实现的,并且它们都存在并且正确完成了吗?packageExample;publicclassParent{privateinta;publicvoidsetVal(intx){a=x;}publicvoidgetVal(){System.out.println("valueis"+a);}}publicclassChildextendsParent{//privatefieldsindicateencapsulationprivateintb;//Childinhe

java - Java中子类可以继承哪些方法?

抱歉,我是Java新手。我正在努力了解Java中的继承和子类/父类(superclass)关系。如果classA是classB的子类,classA的协议(protocol)是包含所有属于classA的方法还是仅包含声明为public和package的方法?classA的协议(protocol)能否具有从其父类(superclass)ClassB继承的私有(private)方法? 最佳答案 首先,“继承”这个词不太合适。你的意思是“可见”。public和protected始终可见private不可见默认(又名“包”)可见性-即没有指定