사람 이름을 담을 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
반응형
'Java > 본격 Java 퀴즈 기초' 카테고리의 다른 글
[Java] 원과 직사각형 추상클래스로 상속받아 구현하기 (0) | 2020.07.13 |
---|---|
[Java] 동물 추상클래스로 상속받아 구현하기 (0) | 2020.07.10 |
[Java] 원의 중심과 원의 관계(상속과 클래스 배열 이용) (0) | 2020.07.10 |
[Java] 동물 울음소리 (다형성(polymorphism) 이용) (0) | 2020.07.10 |
[Java] 학생과 선생의 정보(상속, 중복값 확인) (0) | 2020.07.09 |