从参数(JAVA)获取getDiscount()时出现问题
我想从扩展person类的employee类的getter中获得折扣。折扣因工作时间而异。我已经设置了参数。 当我使用setMethods时,我可以得到折扣。e、 g如果我使用从参数(JAVA)获取getDiscount()时出现问题,java,if-statement,constructor,getter-setter,Java,If Statement,Constructor,Getter Setter,我想从扩展person类的employee类的getter中获得折扣。折扣因工作时间而异。我已经设置了参数。 当我使用setMethods时,我可以得到折扣。e、 g如果我使用 e.setHourlyWorked(56); System.out.println(e.getHourlyWorked()); System.out.println(e.getDiscount()); 我得到了预期的结果 但是我不能得到e.get折扣()来自参数本身,即 Employee e= new Empl
e.setHourlyWorked(56);
System.out.println(e.getHourlyWorked());
System.out.println(e.getDiscount());
我得到了预期的结果
但是我不能得到e.get折扣()代码>来自参数本身,即
Employee e= new Employee(23, 22,"Nab","Kar","000");
System.out.println(e.getHourlyWorked());
System.out.println(e.getDiscount());
我得到0的折扣
人类
public class Person {
//private fields
private String firstName;
private String surname;
private String phoneNumber;
private int discount;
public Person(){
//Default Constructors
firstName="John";
surname="SMITH";
phoneNumber="0000";
}//constructors with all the inputs
public Person(String fn, String sn, String pn){
firstName=fn;
surname=sn;
phoneNumber=pn;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String fn) {
firstName=fn;
}
public String getSurname() {
return surname;
}
public void setSurname(String sn) {
surname = sn;
}
public String getPhoneNumber() {
return phoneNumber;
}
public void setPhoneNumber(String pn) {
phoneNumber = pn;
}
@Override
public String toString(){
return getFirstName()+" "+getSurname()+" "+getPhoneNumber();
}
雇员阶级
package lollyShopSystem;
public class Employee extends Person {
private double hourlyWorked;
private double wage;
private int dis;
public Employee(){
//Default Constructors
hourlyWorked=30;
wage=34;
}
public Employee(double hourlyWorked, double wage, String fn, String sn, String pn) {
super(fn, sn, pn);
this.hourlyWorked = hourlyWorked;
this.wage = wage;
}
public double getHourlyWorked() {
return this.hourlyWorked;
}
public void setHourlyWorked(double hourlyWorked) {
this.hourlyWorked = hourlyWorked;
if (this.hourlyWorked<=20){
this.dis=5;
}
else if (this.hourlyWorked>20 && this.hourlyWorked<=30){
this.dis=10;
}
else {
this.dis=15;
}
}
public double getWage() {
return this.wage;
}
public void setWage(double wage) {
this.wage = wage;
}
public int getDiscount(){
return this.dis;
}
}
包装系统;
公共类雇员扩展个人{
私人双小时工作;
私人双倍工资;
私人int dis;
公职人员(){
//默认构造函数
工时=30小时;
工资=34;
}
公共雇员(双工时、双薪、字符串fn、字符串sn、字符串pn){
超级(fn、sn、pn);
this.hourlyWorked=hourlyWorked;
工资=工资;
}
公共双getHourlyWorked(){
返回此。hourlyWorked;
}
公共无效设置工时(双工时){
this.hourlyWorked=hourlyWorked;
如果(this.hourlyWorked20&&this.hourlyWorked使用构造函数分配hourlyWorked
不会更改折扣。您可以使用setHourlyWorked
函数替换字段分配
公共雇员(双工时,双薪,字符串fn,字符串sn,字符串pn){
超级(fn、sn、pn);
设置hourlyWorked(hourlyWorked);
工资=工资;
}
如果我必须在setDiscount()下使用if折扣声明,我该怎么办
?@user13558639如果我了解您的程序,您不需要在该函数中使用If
语句。使用与setWage
函数相同的技术。或者,您可以将If
语句从setHourlyWorked
移动到getDiscount
函数。当您想要获得di时Scont,程序会在显示折扣之前重新计算折扣。这样,您可以创建一个Employee
实例,并在其正下方调用getDiscount
,然后显示正确的值。