[Primary.] [NonWildTypeArguments] super ( ArgumentListopt ) ;
超级构造函数调用可以用Primary表达式作为前缀。示例(取自JLS):
class Outer {
class Inner{ }
}
class ChildOfInner extends Outer.Inner {
ChildOfInner() {
(new Outer()).super(); // (new Outer()) is the Primary
}
}
是否存在使对Primary ()的调用成为对调用类的构造函数的
假设我有两个类,名为"SuperClass“和SubClass。SubClass扩展了SuperClass。
我刚刚发现,SuperClass不可能有一个SubClass类型的实例变量。
也就是说,这是行不通的:
class SuperClass{
SubClass x = new SubClass();
}
因为它导致构造函数相互调用,进入永久循环。(因为Java自动输入对Super()的调用)
创建子类实例变量是不可能的,也是一个糟糕的设计思想吗?还是有什么工作要做?
我用java导出了一个类。我注意到在执行派生类构造函数中的代码之前调用超类构造函数。有什么方法可以逆转这个顺序吗?
示例:
class Animal
{
public Animal()
{
//do stuff
}
}
class Cat extends Animal
{
int var;
public Cat(int v)
{
var = v;
super();
}
}
这就是我想要做的,但是像这样调用超级()会产生一个错误.
我正在学习Java的内部和外部课程。我知道什么是内类和外部类,以及为什么要使用它们。我遇到了关于这个话题的以下问题,却找不到答案。
假设给出了以下代码:
class outer{
class inner{
}
}
class SubClass extends outer.inner{
}
问题:如何定义最小的子类构造函数?为什么?
Option 1-
Subclass () {
//reason: bacause the default constructor must always be provided
}
Option 2-
Subclass (Outer o
基本上,我有:
public abstract class AbstractClass {
public AbstractClass( Type arg0, Type arg1, Type arg2 ) {
// do some stuff with all those args
}
public AbstractClass( Type onlyOneArg ) {
// do different stuffs with this different arg.
}
protected someMethods() { /
在我的代码中,我使用了带有Singleton Design Pattern的Singleton类。问题是为什么它的子类不允许使用默认构造函数?
我得到了编译时错误:
Implicit super constructor Singleton() is not visible. Must explicitly invoke another constructor
Singleton.java
public class Singleton {
private static Singleton singleton;
private Singleton() {
Syst
我仍然在处理同一个项目(基于Java的shell),并试图运行它--却得到了一个奇怪的错误。我使用的是一个代表其中一个命令的类,因为学校的计算机没有编译器,所以我使用。无论如何,我收到了一个错误,虽然我以前见过它,但它的位置真的很奇怪。错误:
Main.java:56: error: no enclosing instance of type LIST_Command is in scope
public FAKE_CMD(int i) {this.msg = i;System.out.println(i);}
^
这不应该是在调用
我注意到java.util.Objects有一个构造函数,它正在抛出AssertionError。
* @since 1.7
*/
public final class Objects {
private Objects() {
throw new AssertionError("No java.util.Objects instances for you!");
}
...
这是一个静态实用程序类,因此不需要实例。
我理解的一个可能的原因是,开发人员试图确保没有创建该类的实例。作为任何人可以调用此构造函数的唯一方法是通过反射。
还有其他理
我现在正准备面试,有一个问题让我很困惑。人们说,在java构造函数中不能继承,但是这样的代码
public class childclass extends parentclass{
public childclass(){
super();
System.out.println("child");
}
public static void main(String[] args) {
childclass cc = new childclass();
}}
super()不意味着子类继承了父类的构造函数吗?
我第一次在java中遇到继承,我对构造函数有一个问题。
考虑A类
class A{
...(Constructor) {
...
ObjectCreatedBySubClass= new B();
}
...(etc)
protected static B ObjectCreatedBySubClass;
}
以及它的子类
class B extends A{
B(){
..(No matter what code I put here, it does not work.)
}
我正在尝试java,我似乎遇到了一些问题。我唯一的问题似乎是当我添加Stars类的扩展时,构造函数似乎是在我没有声明Stars test = new Star()的情况下被调用的;
Knight.java
import javax.swing.JOptionPane;
public class Knight extends Stars {
private String name;
private int health, battles, age, gold;
public Knight() {
name = JOptionPane.showInput
我目前正在学习java。我有个关于遗产的问题。我知道您可以使用以下方法继承父类的变量:
public class ChildClass extends ParentClass{
}
但是,我想做一些事情,比如继承从ParentClass实例中分配给它们的变量和值。例子:我有一个类动物和一个类狗从动物扩展。这类动物有:
private int number_of_legs;
private int number_of_eyes;
此时,我创建了类动物的一个新实例:
Animal first_animal = new Animal(4,2);
/*where 4 and 2 are the nu
我正在尝试让超类(抽象或接口)成为ArrayList (定义null lambda)中的引用类型……实现超类/接口的子类有不同的lambda表达式来隐藏超类的null lambda。但最终发生的是,调用子类lambda只调用超类的null lambda! 示例代码: public abstract class AbstractAction {
Consumer<AbstractAction> behavior = state -> {
System.out.println("AbstractAction: do nothing");
我很难理解Java中的非静态嵌套类。考虑下面的示例,它输出"Inner“,然后输出"Child”。
class Outer {
class Inner {
Inner() { System.out.println("Inner"); }
}
}
public class Child extends Outer.Inner {
Child(Outer o) {
o.super();
System.out.println("Child");
}
public s
我有三个类,如下所示,用于游戏GUI:-
//this is the parent class.
import javax.swing.*;
import java.awt.*;
public class GameGui extends JFrame{
public void decorateButton(JButton aBut,Color forg,Color back){
Font afont = new Font(Font.SANS_SERIF,Font.PLAIN,18);
aBut.setFont(afont);
a
我在理解super()的概念时遇到了麻烦。Java Tutorials给出了这个示例:
public class Superclass {
public void printMethod() {
System.out.println("Printed in Superclass.");
}
}
public class Subclass extends Superclass {
// overrides printMethod in Superclass
public void printMethod() {
s
super关键字可用于访问父类的成员。除此之外,super也是子类的一个实例,下面的代码证明了这一点:
class A {
}
class B extends A {
public void method() {
System.out.println(this.getClass().isInstance(new B()));
System.out.println(super.getClass().isInstance(new B()));
}
}
public class InheritanceDemo {
public stati
我正在处理一个动物类,它需要一个默认的构造函数。我还需要扩展动物类的特定动物,以及他们自己的名字和声音。
我的动物课如下:
public class Animal {
public String name;
public String sound;
public Animal() {
this.name = "animal";
this.sound = "an animal makes a sound based on what animal that it is";
System.out.println("I am an a