我有一个抽象类A
,而类B
从它扩展。我将这些变量设为私有且很好。
public abstract class A {
private String name;
private String location;
public A(String name,String location) {
this.name = name;
this.location = location;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getLocation() {
return location;
}
然后我想写B班。
public class B extends A{
private int fee;
private int goals; // something unique to class B
我不明白如何为B类编写构造函数来访问它的私有变量。 我写了类似这样的错误。
B(int fee, int goals){
this.fee= fee;
this.goals=goals;
}
你可以帮我解释一下这个简短的解释。
答案 0 :(得分:5)
上述情况应该没问题,除非你必须指定对A
的构造函数的调用,因为通过构建B
,你也构建一个A
e.g
public B(int fee, int goals) {
super(someName, someLocation); // this is calling A's constructor
this.fee= fee;
this.goals=goals;
}
在上面你不得不确定如何构建A
。您为A
指定了哪些值?您通常会将其传递给B的构造函数。
public B(int fee, int goals, String name, String location) {
super(name, location);
this.fee= fee;
this.goals=goals;
}
答案 1 :(得分:1)
您没有类A
的默认构造函数。这意味着您必须从A
构造函数指定对B
构造函数的调用。
public B(String name, String location int fee, int goals) {
super(name, location); // this line call the superclass constructor
this.fee = fee;
this.goals = goals;
}
如果一个类继承了另一个类,那么在构造子类时,也会对母类构造函数进行隐式调用。
由于您的A
没有默认构造函数,这意味着您要使用特定的构造函数,因此必须明确调用它。