public void setName (String n){}
public void setAfm (String a){}
这些是我需要调用的超类方法。
SalariedEmployee (){
name = super.setName(String n);
afm = super.setAfm(String a);
salary = payment();
那就是子类中的构造函数。我该如何正确调用这些方法。我不想在SalariedEmployee中使用任何参数,我想用超类方法设置名称和afm。但我的方法是无效的。所以我想我必须改变它吗?还是我错过了别的什么? 提前谢谢!
答案 0 :(得分:1)
编辑:你也可以使用setter。只有在要从子类中重写的超类中调用方法时,“super”关键字才是必需的。
您应该使用构造函数来设置初始值,但使用setter也是一种可能的解决方案:
class Employee {
String name;
String afm;
public Employee() {
}
public Employee(String name, String afm) {
super();
this.name = name;
this.afm = afm;
}
public void setName(String name) {
this.name = name;
}
public void setAfm(String afm) {
this.afm = afm;
}
}
class SalariedEmployee extends Employee {
//Using constructors
public SalariedEmployee(String name, String afm) {
super(name, afm);
salary = payment();
}
//using setters
public SalariedEmployee() {
setAfm("afm");
setName("name");
salary = payment();
}
}
同样像'setName'这样的setter方法应该是无效的,因为你不希望它返回任何东西,例如像'getName'这样的getter方法。
答案 1 :(得分:0)
有两种情况需要调用super
方法。第一种情况是该方法未被子类覆盖。如果是这种情况,您只需调用
setName("Dick Aceman");
或
setAtf("Acebook");
如果你这样称呼它们会更具描述性:
this.setName("Dick Aceman");
this.setAtf("Acebook");
打电话给他们的防弹方式是:
super.setName("Dick Aceman");
super.setAtf("Acebook");
即使方法被覆盖,最后一个也可以工作,但一般来说它被认为过于描述,所以只有在没有替代方法时才应该使用这种方法调用。请注意,由于您的方法是公共的,因此它们由子类继承。
您尝试的问题是:
return
值分配给变量a
和n
您应该观看一些教程视频,然后您将获得基础知识。看了这么一两个视频后,你应该回到这个答案。