반응형
월급계산 프로그램
추상 Class
package 월급계산프로그램;
public abstract class Employee {
//회사 사원이 가져야 할 데이터를 정해주는 규격
//private 접근제한자는 그 클래스에서만 쓸 수 있다. (상속받아도 불가능)
//접근제한자 : public, private, default, protected
//1) private: 현재 클래스 내부까지만 접근(사용) 가능
//2) public: 같은 프로젝트 안에만 존재한다면 어떤 클래스에서나 접근(사용) 가능
//3) default(접근제한자 생략한상태): 같은 프로젝트 안, 패키지가 동일할때 접근(사용) 가능
//4) protected: 같은 프로젝트 안, 패키지가 다르더라도 상속관계에 있다면 접근(사용) 가능
protected String empno;
protected String name;
protected int pay;
//공통된 로직을 가지는 생성자
//메소드에 생성자가 포함되고, 생성자는 클래스와 명(이름)이 같아야하고 리턴타입이없다.
//이때 생성자의 매개변수가 없는걸 기본생성자라고 한다.
public Employee(String empno, String name, int pay) {
this.empno = empno;
this.name = name;
this.pay = pay;
}
public abstract int getMoneyPay();
public String print() {
String result = empno+":"+name+":"+pay;
return result;
}
}
Main
package 월급계산프로그램;
public class Main {
public static void main(String[] args) {
// 실행공간
RegularEmployee regular = new RegularEmployee("SMHRD001", "홍O동", 4000, 400);
cal(regular);
TempEmployee temp = new TempEmployee("SMHRD002", "박O수", 3000);
cal(temp);
// System.out.println(temp.print());
// System.out.println(temp.getMoneyPay() + "만원");
PartTimeEmployee partTime = new PartTimeEmployee("SMHRD003", "김O독", 10, 10);
cal(partTime);
System.out.println(regular.print());
//SMHRD001:홍O동:4000이렇게 나오는데 상속을 했기때문에 Employee에서만 변경하면
//다른 클래스들도 변경되어 나온다
}
public static void cal(Employee e) {
System.out.println(e.getMoneyPay());
}
}
Part
package 월급계산프로그램;
public class PartTimeEmployee extends Employee {
private int workDay;
public PartTimeEmployee(String empno, String name, int pay, int workDay) {
super(empno, name, pay);
this.workDay = workDay;
}
public int getMoneyPay () {
int result = pay*workDay;
return result;
}
}
package 월급계산프로그램;
public class RegularEmployee extends Employee{
private int bonus;
public RegularEmployee(String empno, String name, int pay, int bonus) {
super(empno, name, pay); // -> 부모의 생성자 (Object의 생성자)-> 이제는 (Employee의 생성자)
//원래 기본생성자는 매개변수 생략가능하지만 Employee에 만들어 논 형태로 바꿔야한다.
this.bonus = bonus;
}
public int getMoneyPay() {
int result = (pay+bonus)/12;
return result;
}
}
package 월급계산프로그램;
public class TempEmployee extends Employee {
public TempEmployee(String empno, String name, int pay) {
super(empno, name, pay);
}
public int getMoneyPay() {
int result = pay/12;
return result;
}
}
반응형
'빅데이터 서비스 교육 > Java' 카테고리의 다른 글
Java 다마고치 게임 예제 (0) | 2022.05.06 |
---|---|
Java Interface (0) | 2022.05.06 |
Java JDBC (0) | 2022.05.06 |
Java 상속 (0) | 2022.05.06 |
Java Arraylist (0) | 2022.05.06 |