본문 바로가기

Java/본격 Java 퀴즈 기초

[Java] 학생과 직장인 정보 표시하기(abstract 클래스 구현)

사람 이름을 담을 person 클래스를 만든다.

abstract 클래스로 만든다.

.

.

package AbstractPerson;

public abstract class Person {
	private String name;
	
	public Person(String name) {
		this.name = name;
		}
	
	public String getName() {return this.name;}
	
	public String getDescription() {
		return getName();
	}

}

.

.

Person 클래스를 상속 받을 직장인 클래스를 만든다.

LocalDate를 사용하기 위해 java.time.LocalDate;를 import 해준다.

abstract 클래스를 상속 받았기 때문에 상위 클래스에 있는 메소드들이 오버라이딩 되어야 한다.

.

.

package AbstractPerson;

import java.time.LocalDate;

public class Employee extends Person {
	private int salary;
	private LocalDate hireDay;
	public Employee(String name, int salary, int year, int month, int day) {
		super(name);
		this.salary = salary;
		this.hireDay = LocalDate.of(year, month, day);
	}
	
	public int getSalary() { return this.salary; }
	public LocalDate getHireDay() { return this.hireDay; }
	
	public void raiseSalary(double byPercent) {
		this.salary += (int)(this.salary * (byPercent / 100f));
	}
	
	public String getDescription() {
		return super.getDescription() + " : 급여 " + this.salary + "원을 받는 직원";
	}
}

.

.

Person 클래스를 상속받을 또다른 학생 클래스를 만든다.

여기에도 마찬가지로 상위클래스에 있는 메소드를 구현해야한다.

.

.

package AbstractPerson;

public class Student extends Person{
	String major;
	public Student(String name, String major) {
		super(name);
		this.major = major;
	}
	
	public String getDescription() {
		return "전공이 " + this.major + "인 " + getName() + " 학생";
	}
}

.

.

잘 구현되었나 확인하는 테스트 메인 클래스를 만든다.

.

.

package AbstractPerson;

public class TestAbstractPerson {

	public static void main(String[] args) {
		Person[] people = new Person[2];
		people[0] = new Employee("아무개", 50000, 2005, 10, 1);
		people[1] = new Student("장영실", "컴퓨터공학과");
		
		for(int i = 0; i < people.length; i++) {
			System.out.println(people[i].getDescription());
		}
	}
}

.

.

728x90
반응형