我不完全理解这个主题及其运作方式。我写了一个代码示例,它看起来是否正确?因为当我跑它时,它一直给我错误。
class team {
public team(String[] name, String[] lastname, int year) {
private String[] name;
private String[] lastname;
private int[] year;
}
public class Player extends team {
Patrolman(String first, String last, int y){
super(first,last,y);
name first = new name{Road};
lastname last = new lastname{Runner};
year y = new year{5};
}
答案 0 :(得分:0)
你遇到的问题不是超级 - 你不能在构造函数中声明私有字段。类字段应该在类范围内声明,而不是在构造函数或任何其他方法中声明。
应该看起来像:
class team {
private String[] name;
private String[] lastname;
private int[] year;
public team(String[] name, String[] lastname, int year) {
name = name;
lastname = lastname;
year = year;
}
...
...
...
另外,我不明白你在Patrolman构造函数中的含义:
name first = new name{Road};
lastname last = new lastname{Runner};
year y = new year{5};
这不是java语法。我想你的意思是:
String[] name = {'Road'};
String[] lastname = {'Runner'};
int year = 5;
但是因为调用super应该是子类构造函数中的第一件事,你应该这样做:
Patrolman(String first, String last, int y) {
super({first},{last},y);
}
答案 1 :(得分:0)
不知道您收到的错误我会猜到它是由Patrolman
类<{1}}中的Player
构造函数引起的。
试试这个
public class Team {
private String[] name;
private String[] lastname;
private int[] year;
public Team(String first, String last, String y) {
name = first.getBytes();
lastname = last.getBytes();
year = y.getBytes();
}
}
public class Player extends Team {
Player(String first, String last, int y) {
super(first,last,y);
}
}
由于您将first
,last
和y
传递到super
,因此您可能无需在Player
构造函数中对它们执行任何操作。
答案 2 :(得分:0)
您的代码存在一些问题。
name
,但该变量似乎未在您的子类中实例化。在你的超类中,它被创建(在构造函数内部,因此需要移出)作为私有变量,因此无法在子类中直接访问它。您需要使用公共/受保护的getter方法或将变量本身设为公共或受保护。name
应该是String而不是它自己的对象。它不需要使用new
关键字声明,因为它仅在创建对象时使用。只需做String name = variableName;
即可。对于子类构造函数答案 3 :(得分:0)
虽然我不能帮助太多,因为你没有提供错误信息,但我可以解释一下。
Java中的super
关键字是对派生类的父类的引用。它的主要用途是当您尝试调用父类的方法或构造函数的版本时。
例如,如果我们有一个基类A,那么派生类B就是这样......
public class A
{
public A()
{
//Constructor
}
public void display()
{
System.out.println("TEST");
}
}
public class B extends A
{
public B()
{
super();
}
public void display()
{
super.display();
}
}
super()
的构造函数中对B class
的调用将调用A class
构造函数来执行。
与同一族的类之间的重写方法类似,您可以使用父方法执行调用super
,就像我在重写的display
方法中所写的一样。
希望有所帮助!