草庐IT

Inheritance

全部标签

java - 创建子类的实例是否会自动创建其父类(super class)对象?

如果我创建一个子类的对象,那么是否也会创建子类继承的父类(superclass)对象?如果不是那么如何通过创建Thread类的子类(在多线程中)调用Thread类构造函数并创建Thread对象? 最佳答案 子类的实例是父类(superclass)的实例。只创建了一个对象,但作为该创建的一部分,构造函数调用一直链接在一起,一直到java.lang.Object。例如:publicclassSuperclass{//Note:Iwouldn'tnormallyusepublicvariables.//It'sjustforthesake

Java:父类可以静态获取子类的类名吗?

关于Java,我想静态知道当前类的类名。A是B的父类。我想在A(父类)中有一个静态字符串,其中包含当前类的类名,但是当在B(子类)中引用这个静态字符串时,它应该包含B的类名。这可能吗?例子:publicclassParent{protectedstaticStringMY_CLASS_NAME=???...}publicclassChildextendsParent{publicvoidtestMethod(){if(MY_CLASS_NAME.equals(getClass().getName())){System.out.println("We'reequal!");}}}

java - 方法不重写或实现父类(super class)型的方法

我正在使用继承和多态性创建一个模拟员工数据库。尝试覆盖父类(superclass)方法时遇到以下错误。HourlyEmployeeisnotabstractanddoesnotoverrideabstractmethodresetWeek()inEmployeepublicclassHourlyEmployeeextendsEmployee^HourlyEmployee.java:43:error:methoddoesnotoverrideorimplementamethodfromasupertype@Override^HourlyEmployee.java:54:error:met

继承

为什么最后打印“I'maChildClass”。?publicclassParent{StringparentString;publicParent(){System.out.println("ParentConstructor.");}publicParent(StringmyString){parentString=myString;System.out.println(parentString);}publicvoidprint(){System.out.println("I'maParentClass.");}}publicclassChildextendsParent{pub

java - 为什么 Java 不允许通过实例方法隐藏静态方法?

如图http://docs.oracle.com/javase/tutorial/java/IandI/override.html,Java允许通过实例方法覆盖实例方法并通过静态方法隐藏静态方法我的问题是为什么Java不允许通过实例方法隐藏静态父类(superclass)方法。这可以这样做:classBase{staticvoidfoo(){}}classDerivedextendsBase{voidfoo(){}voidaccess(){foo();Base.foo();}}我没有看到上述方法有任何特别的问题-它只是像(允许的)静态隐藏一样“困惑/复杂”。

java - 我怎样才能拥有从 Java 中的抽象基类型派生的 Singleton?

我有一些用作单例的类。它们共享一些基本功能并从通常不用作单例的库中扩展相同的祖先。如果我将公共(public)功能放在一个从公共(public)祖先继承的基类中,我得到一个实例化没有意义的类,所以我把它抽象化了。此外,因为这些类都用作单例,所以它们都应该有一个init()和一个getInstance()方法,它们都是静态的。所有构造函数当然都是非公开的。现在,由于static是抽象方法的非法修饰符,因此以下内容不起作用,尽管这正是我想要的:classBaseextendsLibraryClass{protectedBase(){//...constructor}//...commonm

java - 为什么 `ScalaObject`存在?

为什么所有Scala类都继承自ScalaObject,尽管与定义了额外方法的AnyRef相比,该特征完全是空的并且没有(可见?)功能?这不会减慢像equals()或hashCode()这样的方法调用,因为它需要考虑另一个类(这可能会覆盖这些方法)?不是可以将AnyRef和ScalaObject合并为一个类吗?更新:Scala对象waseradicated使用新的2.10版Scala。 最佳答案 ScalaObject插入一个$tag方法,根据librarysourcecodefor2.7中的注释,“需要优化与案例类的构造函数匹配的模

java - 非泛型类扩展泛型类是什么意思

publicclassBextendsC{}这是什么意思?C需要扩展A吗?除了说BextendsC之外,我还有什么额外的限制? 最佳答案 在这种情况下,C是一个可以接受泛型参数的类,您将指定类型A作为参数。然后,B扩展了C的特定参数化。例如,假设:classC{Texample();}classBextendsC{}然后B.example()将返回一个Integer。 关于java-非泛型类扩展泛型类是什么意思,我们在StackOverflow上找到一个类似的问题:

Java继承——构造函数

在为我的期末学习做准备时,我在我目前正在学习的书中看到了以下陈述。考虑以下代码:classA{publicA(intx){}}classBextendsA{publicB(intx){}}B类的构造函数中是否必须调用A类的构造函数(super(x))。该书指出这不是强制性的,因为它们具有确切的参数数量和类型。但是当我在java编译器中尝试这个时,会抛出以下错误:constructorAinclassAcannotbeappliedtogiventypes;required:intfound:noargumentsreason:actualandformalargumentlistsdi

java.lang.ClassException : A cannot be cast into B 异常

我实现了这段代码:classA{//somecode}classBextendsA{//somecode}classC{publicstaticvoidmain(String[]args){Bb1=(B)newA();Aa1=(B)newA();}}这两行,分别编译时,编译正常,但给出运行时错误出现java.lang.ClassException:AcannotbecastintoB。为什么它们编译很好,但运行时出错? 最佳答案 类型A的变量可以存储对类型A或其子类型的对象的引用,就像在您的案例类B中一样。所以有可能有这样的代码:A