我正在关注视频教程,我遵循了所有内容,但似乎我不断收到错误:
使用“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/