java - 为什么一直显示 "cannot reference name before supertype constructor has been called"

标签 java

我正在关注视频教程,我遵循了所有内容,但似乎我不断收到错误:

使用“super”时,“在调用父类(super class)型构造函数之前无法引用名称”

iteam.java

public class iteam {
    String name;

    public iteam(String name) {
        this.name = name;
    }

    public void use(){
       System.out.println(name);
    }

    public String getName() {
        return name;
    }
}

Hammer.java

package iteams;

/**
 *
 * @author Ayman
 */
public class Hammer extends iteam{

    public Hammer() {
        super(name:"ABC Hammer");
    }

main.java

package main;
import iteams.Hammer;

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 *
 * @author Ayman
 */
public class main {

    public static void main(String[] args){

        Hammer hammer = new Hammer();
        hammer.use();

    }

预期结果应该是:ABCHammer

但它一直给我上面的错误。 我仍在学习,如果有人能指出我做错了什么,那就太好了。

但是,如果我在 main.java 中使用此代码,它会起作用:

Hammer hammer = new Hammer("ABC Hammer");
hammer.use();

hammer.java 及以下内容

public Hammer(String name) {
    super(name);
}

最佳答案

这里:

super(name:"ABC Hammer");

Java 与 python 不同。 Java 中没有命名参数。您上面的代码不是有效的 java 语法。

事实是:学习一门新语言时,不要盲目尝试在新语言中应用其他语言的概念。是的,了解你的概念。但然后研究新语言如何/是否支持它们。

不要发明自己的语法。

关于java - 为什么一直显示 "cannot reference name before supertype constructor has been called",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59127895/

相关文章:

java - 无法将插件添加到Gradle构建文件中?

java - 日志中缺少时间戳(JAVA)

java - 有效使用文件系统列出存储在资源中的 zip 文件条目

java - 在 Java 中赋值?

java - Intershop studio 4.20.0 - 编译Java - ClassNotFoundException : com. sun.xml.bind.v2.ContextFactory

java - Android 上的 DefaultHttpClient 或 HttpURLConnection

java - 在 Jersey 中返回 XML/JSON

java - 从 Guava Cache call() 优雅退出

java split regex - 任意字符组合

java - Liferay 通过 ext 插件对源代码进行的更改没有发生