package ex01์๊ธ๊ณ์ฐํ๋ก๊ทธ๋จ;
public abstract class Employee {
// ์ ๊ทผ์ ํ์์ ์ข
๋ฅ
// public = ์ด๋์๋ ๋๊ตฌ๋ ๋ค ์ ๊ทผ ๊ฐ๋ฅ
// default = ๋์ผํ ํจํค์ง๋ง(์๋ฌด๊ฒ๋ ์ ์ ๋ ๊ฒ)
// private = ํ์ฌ ํด๋์ค์์๋ง ์ ๊ทผ ๊ฐ๋ฅ
// protected = ๋์ผํ ํจํค์ง๊ฑฐ๋ ์์๊ด๊ณ๊น์ง ์ ๊ทผ ๊ฐ๋ฅ
// 1. ํ๋
// private -> public -> protected
// ์ฌ๋ฒ
protected String empno;
//์ด๋ฆ
protected String name;
//์ฐ๋ด
protected int pay;
// default = ๋์ผํ ํจํค์ง๋ง
// protected = ์์๊ด๊ณ๊น์ง ์ ๊ทผ ๊ฐ๋ฅ
// ์๋ฐ ์ ์ฅ๊ณต๊ฐ
// heap : ์ปค๋ค๋ ๋ฐ์ดํฐ ์ ์ฅํ๋ ๊ณต๊ฐ (GC)
// stack : ๋น๊ต์ ์์ ๋ฐ์ดํฐ ์ ์ฅํ๋ ๊ณต๊ฐ
// = ์ค๊ดํธ ์์ญ ์๊น์ง๋ง ํ์ฉ๋ ์ ์ฅ๊ณต๊ฐ
// static : ๊ณ ์ ์ ์ธ ๋ฐ์ดํฐ ์ ์ฅํ๋ ๊ณต๊ฐ
// --> ์ ์ผ ๋จผ์ ํธ์ถ๋๋ ๊ณต๊ฐ = main method
// --> ๋ชจ๋ ํด๋์ค ํ์ผ์์ ๋์ผํ ๊ฐ๋ค์ ๊ณต์ ํด์ผ ํ๋ ๊ฒฝ์ฐ์๋ง static ํค์๋ ์ฌ์ฉํด ๋ณ์์์ฑ
// Static ํค์๋๋ฅผ ์ฌ์ฉํด์ ์ ์ธ๋ ๋ง๋ค์ด์ง ๋ฉ์๋๋ ๊ฐ์ฒด ์์ฑ์ ํ์ง ์์๋ ๋ฐ๋ก ์ฌ์ฉ๊ฐ๋ฅํ๋ค.
// ์)) Arrays.toString()
// static์ ์ ๊ทผ์ ํ์ ์๋๊ณ ์ ์ฅ๊ณต๊ฐ์ด๋ค ํจ๋ถ๋ก ์ฐ์ง ๋ง์!!<--
// 2. ๋ฉ์๋
public Employee(String empno, String name, int pay) {
super();
this.empno = empno;
this.name = name;
this.pay = pay;
}
public abstract int getMoneyPay(); // ๋ก์ง์ ๋ค๋ฅธ๋ฐ ๋ฉ์๋ ํ์ ๊ฐ์.
public String print() {
return empno+" : "+name+" : "+pay;
}
// ์์ํด๋์ค๊ฐ ์ ๊ฐ์ง๊ณ ์์ผ๋ฉด ๋ถ๋ชจ(Employee)์๊ฒ ๊ฐ์ ์ฐพ์
}
package ex01์๊ธ๊ณ์ฐํ๋ก๊ทธ๋จ;
public class Main {
public static void main(String[] args) {
// ์ ๊ท์ง ์์ฑ
RegularEmployee regular = new RegularEmployee("SMHRD001", "ํ0๋", 4000, 400);
// ๋น์ ๊ท์ง ์์ฑ
TempEmployee temp = new TempEmployee("SMHRD002", "๋ฐ0์", 3000);
// ํํธํ์ ์์ฑ
PartTimeEmployee p = new PartTimeEmployee("SMHRD003", "์์ฑํ", 10, 20);
System.out.println(regular.print());
System.out.println(regular.getMoneyPay()+"๋ง์");
System.out.println(temp.print());
System.out.println(temp.getMoneyPay()+"๋ง์");
System.out.println(p.print());
System.out.println(p.getMoneyPay()+"๋ง์");
}
}
package ex01์๊ธ๊ณ์ฐํ๋ก๊ทธ๋จ;
public class PartTimeEmployee extends Employee {
// 1. ํ๋
// ์ฌ๋ฒ
private String empno;
//์ด๋ฆ
private String name;
//์ผ๋น
private int pay;
//์ผ์
private int workDay;
// 2. ์ผ์
// ์์ฑ์
public PartTimeEmployee(String empno, String name, int pay, int workDay) {
super(empno, name, pay);
this.workDay=workDay;
}
public int getMoneyPay() {
return (pay*workDay) ;
}
}
package ex01์๊ธ๊ณ์ฐํ๋ก๊ทธ๋จ;
public class RegularEmployee extends Employee {
// 1. ํ๋
//์ฌ๋ฒ
private String empno;
//์ด๋ฆ
private String name;
//์ฐ๋ด
private int pay;
//๋ณด๋์ค
private int bonus;
// Alt+Shift+S ์์ฑ์ ๋ง๋ค๊ธฐ generate constructor using field
// 2. ๋ฉ์๋
//์์ฑ์
public RegularEmployee(String empno, String name, int pay, int bonus) {
super(empno, name, pay); // ์ํผ์์ ์ ๋นจ๊ฐ ์ค์ด ๋จ๋๊ฐ? - ๋ถ๋ชจ์์ฑ์ ํธ์ถ
// ๊ทผ๋ฐ ๋ถ๋ชจ์์ฑ์์ ๊ธฐ๋ณธ ์์ฑ์๋ ์์(์ฐ๋ฆฌ๊ฐ ์๋ก์ด ์์ฑ์ ๋ง๋ค์๊ธฐ ๋๋ฌธ)
// ๋งค๊ฐ๋ณ์ ์๋ฌด๊ฒ๋ ์๋ ๊ธฐ๋ณธ์์ฑ์ ์ ์๋์ง ์์ ์ํ
this.bonus=bonus;
}
public int getMoneyPay() {
return (pay+bonus)/12;
}
}
package ex01์๊ธ๊ณ์ฐํ๋ก๊ทธ๋จ;
public class TempEmployee extends Employee {
//1. ํ๋
// ์ฌ๋ฒ
private String empno;
// ์ด๋ฆ
private String name;
// ์ฐ๋ด
private int pay;
// 2. ๋ฉ์๋
// ์์ฑ์
public TempEmployee(String empno, String name, int pay) {
super(empno, name, pay);
}
public int getMoneyPay() {
return pay / 12;
}
}