지-코바
[지코바]5회차 문제풀이 - 상속
moonseok
2021. 11. 25. 21:25
-문제
- 랩이오사의 직원 정보를 기록할 LabInfo클래스를 상세정보를 기록할 LabDetailInfo클래스에 상속하고 이름과 나이는 LabInfo클래스에, 주소와 전화번호 남은 연차 정보는 LabDetailInfo에 입력할 수 있도록 구성해주세요! 랩이오사 전 직원 8명의 정보를 출력하시오.
-풀이
LabInfo를 LabDetailInfo가 상속받게 하고 LabInfo클래스에서 이름과 나이를 입력, LabDetailInfo에서 주소, 전화번호와 남은연차를 입력받도록 한다.
//LabInfo Class
class LabInfo {
String name;
String birthday;
public void setInfo(String name, String birthday) {
this.name = name;
this.birthday = birthday;
}
}
이름과 나이를 입력받을려 했지만 노션에 생일만 입력이 되어 있어서 생일을 입력하기로 했다...
이름과 생일을 String으로 선언해주고 setInfo 메서드를 정의해준다.
//LabDetailInfo Class
class LabDetailInfo extends LabInfo{
String address;
String phoneNumber;
double holidayLeft;
public void setDetailInfo(String address, String phoneNumber, double holidayLeft) {
this.address = address;
this.phoneNumber = phoneNumber;
this.holidayLeft = holidayLeft;
System.out.println("이름 : " + this.name + "\n생일 : " + this.birthday + "\n주소 : "+address + "\n전화번호 : " + phoneNumber + "\n남은 연차 : " + holidayLeft);
System.out.println("-------------------------------------");
}
}
그리고 LabInfo를 상속받는 LabDetailInfo 클래스를 정의해준다. 주소와 전화번호를 String으로 선언해주고 남은 연차는 반차를 반영하기 위해서 double로 선언해주었다. 그리고 setDetailInfo라는 새로운 메서드를 정의하였다. LabDetailInfo는 LabInfo를 상속받기 때문에 부모 클래스의 값인 name과 birthday를 가져올 수 있다.
//Lab254EmployeeInfo Class
public class Lab254EmployeeInfo{
public static void main(String[] args) {
LabDetailInfo e1 = new LabDetailInfo();
LabDetailInfo e2 = new LabDetailInfo();
LabDetailInfo e3 = new LabDetailInfo();
LabDetailInfo e4 = new LabDetailInfo();
LabDetailInfo e5 = new LabDetailInfo();
LabDetailInfo e6 = new LabDetailInfo();
LabDetailInfo e7 = new LabDetailInfo();
LabDetailInfo e8 = new LabDetailInfo();
e1.setInfo("이아영", "11/19");
e2.setInfo("김도연", "6/17");
e3.setInfo("김익선", "11/15");
e4.setInfo("당병진", "09/25");
e5.setInfo("박지윤", "02/01");
e6.setInfo("백상수", "01/03");
e7.setInfo("박문석", "01/29");
e8.setInfo("김유미", "no data");
e1.setDetailInfo("용인시 수지구", "010-8836-5840", 20);
e2.setDetailInfo("용인시 수지구", "010-8836-5840", 20);
e3.setDetailInfo("서울시 구로구", "010-5546-9383", 5.5);
e4.setDetailInfo("수원시 팔달구", "010-3489-0666", 10);
e5.setDetailInfo("서울시 마포구", "010-2569-0825", 12.5);
e6.setDetailInfo("수원시 팔달구", "010-4067-4527", 3.5);
e7.setDetailInfo("수원시 영통구", "010-8020-3198", 4);
e8.setDetailInfo("서울시 용산구", "no data", 0);
}
}
출력 부분에서는 LabDetailInfo를 e1~e8로 인스턴스화 하였다. LabDetailInfo 클래스에는 setInfo메서드가 정의되지 않아 원래는 호출할 수 없지만 LabInfo를 상속받고 있기 때문에 메서드를 호출하고 잘 동작하는 것을 확인할 수 있었다.
유미님이 짤렸지만 결과도 제대로 나온 것을 확인할 수 있었다.