빅데이터 서비스 교육/Java

Java 추상클래스

Manly 2022. 5. 6. 10:55
반응형

 

 

 

월급계산 프로그램

 

추상 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