- 지식인을 참고한 것이 있지만 이번에 toString과 super클래스의 용도를 알수 있었던 중요한 코딩이였습니다.
- 비어있는 earnings와 toString에 적합한 코딩문을 넣는 문제였습니다.
package 연습;
class Employee{
private String name;
private String id;
static private int count = 0;
public Employee(String name, String id){
this.name = name;
this.id = id;
count++;
}
public double earnings() {
return 0;
}
public String toString(){
return name + "(" + id + ")";
}
public static int getCount(){
return count;
}
}
class SalariedEmployee extends Employee {
private double monthlySalary;
public SalariedEmployee(String name, String id, double salary) {
super(name, id);
monthlySalary = salary;
}
public double earnings() {
return monthlySalary;
}
public String toString() {
return super.toString()+"\nmonthly salary: "+ monthlySalary;
}
}
class HourlyEmployee extends Employee {
private double wage;
private double hours;
public HourlyEmployee(String name, String id, double wage, double hours){
super(name, id);
this.wage = wage;
this.hours = hours;
}
public double earnings(){
return wage*hours;
}
public String toString(){
return super.toString()+"\nwage: "+wage+"\n"+"hours: "+hours;
}
}
class CommissionEmployee extends Employee{
private double grossSales;
private double commissionRate;
public CommissionEmployee(String name, String id, double sales, double rate) {
super(name, id);
grossSales = sales;
commissionRate = rate;
}
public double earnings() {
return grossSales * commissionRate;
}
public String toString() {
return super.toString()+"\ngross sales: "+grossSales+"\n"+"commission rate: "+commissionRate;
}
}
class BasePlusCommissionEmployee extends CommissionEmployee{
private double baseSalary;
public BasePlusCommissionEmployee(String name, String id, double sales, double rate, double salary) {
super(name, id, sales, rate);
baseSalary = salary;
}
public double earnings(){
return super.earnings()+baseSalary;
}
public String toString(){
return super.toString()+"\nbaseSalary: "+baseSalary;
}
}
public class EmployeeTest {
public static void main(String[] args) {
Employee arr[] = new Employee[4];
arr[0] = new SalariedEmployee("Smith", "s1111", 300);
arr[1] = new HourlyEmployee("Karen", "h2222", 1, 160);
arr[2] = new CommissionEmployee("Jones", "c3333", 2000, 0.1);
arr[3] = new BasePlusCommissionEmployee("Lewis", "b4444", 2000, 0.06, 100);
double sum = 0.0;
for (Employee e : arr) {
System.out.println(e);
System.out.println("payment: "+e.earnings());
System.out.println();
sum+=e.earnings();
}
System.out.println("Total employees: "+Employee.getCount());
System.out.println("Total payment: "+sum);
}
}
'Java > JAVA8' 카테고리의 다른 글
[자바] 2개의 주사위의 숫자를 랜덤으로 출력(스레드 이용) (0) | 2021.07.01 |
---|---|
[자바] 스레드를 이용해서 3개의 cpu이용하기 (0) | 2021.07.01 |
[자바] extends를 이용한 자바 문장 (0) | 2021.07.01 |
[자바] 짝수 패리티(even parity) (0) | 2021.07.01 |
[자바]2차 방정식의 실수해 (0) | 2021.07.01 |