私はオンラインで調べていますが、私の子クラスでメソッドを呼び出す方法はまだわかりません。エグゼクティブでpay()メソッドを呼び出そうとしていますが、if文に次のコードを入力するとエラーが発生します。メソッドを呼び出そうとしたときのエラー
staff[3].awardBonus(bonus);
このメソッドではエラーが発生します。私はそのメソッドを呼び出す方法がわかりません...どんな助けでもありがとう! `import java.util.Scanner;ここで
import java.util.Scanner;
public class Tester
{
public static void main (String args[])
{
Scanner scan = new Scanner(System.in);
StaffMember[] staff = new StaffMember[4];
String internName = "Susan 2";
String empName = "Tyler O.";
String hrName = "Becky R.";
String execName = "Daniel H.";
String address = "Brighton";
String phone = "420 - 0000";
String SSN = "12345789";
double rate = 1000;
staff [0] = new Intern(internName, address, phone);
staff [1] = new Employee(empName, address, phone, SSN, rate);
staff [2] = new HourlyEmployee(hrName, address, phone, SSN, rate);
staff [3] = new Executive(execName, address, phone, SSN, rate);
for (StaffMember staffPrint : staff)
{
System.out.println (staffPrint.toString() + "\n");
}
System.out.println("If you would like to give an executive a bonus, press 1. \nIf you would like to increase the hours of an hourly employee, press 2.");
int input = scan.nextInt();
if(input == 1)
{
double bonus = 0;
System.out.println("Enter the bonus for your employee: ");
bonus = scan.nextDouble();
}
}
エグゼクティブクラスで、EmployeeクラスとStaffMemberクラス
public class Executive extends Employee
{
public Executive(String name, String address, String phone, String SSN, double rate)
{
super(name, address, phone, SSN, rate);
}
public double pay()
{
double money = super.pay();
return money;
}
public String toString()
{
String employee = super.toString();
return employee;
}
public void awardBonus(double execBonus)
{
rate += execBonus;
}
}
従業員
public class Employee extends StaffMember
{
String SSN;
double rate;
public Employee(String name, String address, String phone, String SSN, double rate)
{
super(name, address, phone);
this.SSN = SSN;
this.rate = rate;
}
public double pay()
{
return rate;
}
public String toString()
{
String employee = "";
employee = ("Name: " + name + "\nAddress: " + address + "\nPhone Number: " + phone + "\nSocial Security Number: " + SSN + "\nPay: " + pay());
return employee;
}
}
StaffMember
public abstract class StaffMember
{
String name;
String address;
String phone;
public StaffMember(String name, String address, String phone)
{
this.name = name;
this.address = address;
this.phone = phone;
}
public String toString()
{
String employee = "";
employee = ("Name: " + name + "\nAddress: " + address + "\nPhone Number: " + phone);
return employee;
}
public abstract double pay();
}
エラーとは何ですか? – notyou
エラーは "シンボルを見つけることができません - メソッドawardBonus(double)" –
継承と多相操作の仕組みを読んでおく必要があります。あなたは 'StaffMember []'を持っています、AFAICSは 'StaffMember'に' awardBonus'メソッドはありません。したがって、あなたはそれを呼び出すことはできません。あなたは言うかもしれませんが、私は '' Executive'を要素 '' 3 'に置き、 '' awardBonus''を呼び出しています。もしこれがコンパイルされ、 'staff [3] = new FiredStaffMember'をコード、何が起こるのでしょうか? –