package overriding;
import java.util.Scanner;
// 부모 클래스
class Employee {
// 멤버 변수
String name; // 이름
// 게터
String getName() { // 이름 획득
return name;
}
// 세터
void setName(String n) { // 이름 지정
this.name=n;
}
// 상속을 받을 클래스에서 재정의를 진행할 메서드
int getPays() { // 급여 계산
return 0;
}
}
// 정규직_자식 클래스
class Permanent extends Employee {
// 멤버변수
// String name;
int pays; // 급여
int bonus; // 보너스
Permanent() { } // 기본 생성자
Permanent(String name, int pays, int bonus) { // 인자 생성자
this.name = name;
this.pays = pays;
this.bonus = bonus;
}
int getBonus() {
return bonus;
}
void setBonus(int bonus) {
this.bonus = bonus;
}
void setPays(int pays) {
this.pays = pays;
}
// 부모의 원형 메서드를 재정의한 메서드.
@Override
int getPays() {
return pays + bonus;
}
}
// 임시직_자식 클래스
class Temporary extends Employee {
// 멤버 변수
// String name;
int time; // 작업 시간
int pays; // 시간당 급여
public Temporary() { } // 기본 생성자
public Temporary(String name, int time, int pays) { // 인자 생성자
this.name = name;
this.time = time;
this.pays = pays;
}
public int getTime() {
return time;
}
public void setTime(int time) {
this.time = time;
}
public void setPays(int pays) {
this.pays = pays;
}
// 부모의 원형 메서드를 재정의한 메서드.
@Override
int getPays() {
return time * pays;
}
}
public class Exam01_Employee {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
String employee="";
System.out.println("고용형태-정규직<P>, 임시직<T>를 입력하세요.");
employee=sc.next();
if(employee.equalsIgnoreCase("P")) { //정규직일 때
Permanent permanent = new Permanent();
employee="정규직";
System.out.println("이름, 기본급, 보너스를 입력하세요");
permanent.setName(sc.next());
permanent.setPays(sc.nextInt());
permanent.setBonus(sc.nextInt());
System.out.println("==============================");
System.out.println("고용형태 :" + employee);
System.out.println("이름 : " + permanent.getName());
System.out.printf("급여 : %,d원\n", permanent.getPays()); }
else if(employee.equalsIgnoreCase("T")) { //임시직일 때
Temporary temporary = new Temporary();
employee="임시직";
System.out.println("이름, 작업시간, 시간당 급여를 입력하세요");
temporary.setName(sc.next());
temporary.setTime(sc.nextInt());
temporary.setPays(sc.nextInt());
System.out.println("==============================");
System.out.println("고용형태 : " + employee);
System.out.println("이름 : " + temporary.getName());
System.out.printf("급여 : %,d원\n", temporary.getPays()); }
else {
System.out.println("잘못 입력하셨습니다.");
}
sc.close();
}
}
결과
고용형태-정규직<P>, 임시직<T>를 입력하세요.
p
이름, 기본급, 보너스를 입력하세요
홍길동
2000000
50000
==============================
고용형태 :정규직
이름 : 홍길동
급여 : 2,050,000원
'문제 풀이 > Java' 카테고리의 다른 글
[Java] 인터페이스를 이용하여 원과 사각형의 면적을 구해보자 (0) | 2021.09.02 |
---|---|
[Java] 추상클래스를 적용하여 급여관리 시스템 만들어보기 (0) | 2021.09.02 |
[Java] 클래스 응용문제_영수증 출력하기 (0) | 2021.08.29 |
[Java] 클래스 응용문제_TV 정보 바꾸기 (0) | 2021.08.23 |
[Java] 배열 알고리즘 응용문제 (0) | 2021.08.20 |
댓글