내 코드는 커미션의 유료, 현재 시간 및 총 판매액을 인쇄하지 않으며 상속에 관련이 있을지 모르지만 확실하지 않습니다. 나는 다른 반에서 그들을 캐스팅했으나 나는 다른 반에서 캐스팅에 문제가 없었기 때문에 문제가 여기에 있다고 생각한다. 모든 값은위원회의 3 가지 값 이외에 프로그램에서 반환됩니다. 수수료 및 현재 시간은 Commission이 상속되지만 Commission 클래스에서는 작동하지 않습니다. 여기 상속성 Java super.print()가 값을 반환하지 않음
//StaffMember Class
public abstract class StaffMember {
protected String name, address, number;
public StaffMember(String name, String address, String number) {
this.name = name;
this.address = address;
this.number = number;
}
public String toString(){
return "Name: " +name + "\nAddress: " +address + "\nPhone: " +number;
}
public abstract double pay();
}
//Employee Class
public class Employee extends StaffMember{
private String rsiNumber;
protected double payRate;
public Employee(String rsiNumber, double payRate, String name, String address, String number) {
super(name, address, number);
this.rsiNumber = rsiNumber;
this.payRate = payRate;
}
public String toString(){
return super.toString() + "\nRSI Number: " +rsiNumber + String.format("\nPaid: €%,.2f" ,pay());
}
public double pay(){
return payRate;
}
}
//Hourly Class
public class Hourly extends Employee{
private int hours;
public Hourly(String rsiNumber, double payRate, String name, String address, String number) {
super(rsiNumber, payRate, name, address, number);
this.hours = 0;
}
public void addHours(int hours){
this.hours=hours;
}
public double pay(){
int otHours=0;
if(hours>40){
otHours=hours-40;
}
double pay=(hours-otHours)*payRate+(otHours*payRate*1.5);
return pay;
}
public String toString(){
return super.toString() + "\nCurrent Hours: " +hours;
}
}
//Commission Class
public class Commission extends Hourly{
private double totalSales, commissionRate;
public Commission(double commissionrate, String rsiNumber, double payRate, String name, String address, String number) {
super(rsiNumber, payRate, name, address, number);
this.commissionRate = commissionrate;
this.totalSales=0;
}
public void addSales(int sales){
this.totalSales=sales;
}
public double pay(){
return super.pay()+(totalSales*commissionRate);
}
public String toString(){
return super.toString() + "\nTotal Sales: " +totalSales;
}
}
//Casting Method From Another Class
public void processStaff(){
for(int i=0; i<sm.length; i++){
if (sm[i] instanceof Hourly) {
Hourly h = (Hourly) sm[i];
if(h.name.equals("Joanne")){
h.addHours(50);
}
}else if (sm[i] instanceof Executive) {
Executive e = (Executive) sm[i];
if(e.name.equals("John")){
e.awardBonus(500);
}
}else if (sm[i] instanceof Commission) {
Commission c = (Commission) sm[i];
if(c.name.equals("Molly")){
c.addHours(55);
c.addSales(400);
}else if(c.name.equals("Joe")){
c.addHours(45);
c.addSales(950);
}
}
}
}
내가 반환 값과
편집하지 0
를 받고되어야 할 때 내가 얻을 출력 : 단지위원회 이후 시간당 내부위원회를 바꾸어 해결책을 찾을 것 같다 시간별 유형입니다.Commission
그래서 당신이 그것에있는 AddHours 또는 addSales를 호출하지 않습니다에 대한
public void processStaff() {
for (int i = 0; i < sm.length; i++) {
if (sm[i] instanceof Hourly) {
Hourly h = (Hourly) sm[i];
if (h.name.equals("Joanne")) {
h.addHours(50);
} else if (sm[i] instanceof Commission) {
Commission c = (Commission) sm[i];
if (c.name.equals("Molly")) {
c.addHours(55);
c.addSales(400);
} else if (c.name.equals("Joe")) {
c.addHours(45);
c.addSales(950);
}
}
} else if (sm[i] instanceof Executive) {
Executive e = (Executive) sm[i];
if (e.name.equals("John")) {
e.awardBonus(500);
}
}
}
}
staffmember 클래스는 어디에 있습니까? –
@Mohsen_Fatemi 이제는 기본 클래스를 추가 했으므로 귀찮게하지 않았으므로 오류가 없습니다. – Poena
감사합니다. 현재 시간 및 유료 및 총 판매액의 값을 변경하고 싶습니까? –