- IS - A관계(is a relationship : inheritance)
일반적인(general) 개념과 구체적인(specific) 개념과의 관계
상위 클래스 : 일반적인 개념 클래스( 예 - 포유류)
하위 클래스 : 구체적인 개념 클래스( 예 - 사람, 호랑이, 독수리 등)
단순히 코드를 재사용하는 목적으로 사용하지않는다. 의미를 부여해야한다.
- HAS - A관계(composition)
한 클래스가 다른 클래스를 소유한 관계
- 클래스 Employee(직원)은 클래스 Regular(정규직)와 Temporary(비정규직)의 상위 클래스
- 필드: 이름, 나이, 주소, 부서, 월급 정보를 필드로 선언
- 생성자 : 이름, 나이, 주소, 부서를 지정하는 생성자 정의
- 메소드 printInfo() : 인자는 없고 자신의 필드 이름, 나이, 주소, 부서를 출력
클래스 Regular는 위에서 구현된 클래스 Employee의 하위 클래스
생성자 : 이름, 나이, 주소, 부서를 지정하는 상위 생성자 호출
Setter : 월급 정보 필드를 지정
메소드 printInfo() : 인자는 없고 "정규직"이라는 정보와 월급을 출력
package Test;
public class Test {
public static void main(String[] args) {
Employee regular = new Regular("김씨", 20, "서울", "인사", 4000000);
regular.printInfo();
}
}
public class Regular extends Employee {
private int salary;
public Regular(String name, int age, String adress, String Dep, int salary) {
super(name, age, adress, Dep);
this.salary = salary;
}
public void printInfo() {
super.printInfo();
System.out.println("정규직 " + salary);
}
// 클래스 Regular는 위에서 구현된 클래스 Employee의 하위 클래스
// 생성자 : 이름, 나이, 주소, 부서를 지정하는 상위 생성자 호출
// Setter : 월급 정보 필드를 지정
// 메소드 printInfo() : 인자는 없고 "정규직"이라는 정보와 월급을 출력
}
public class Employee {
private String name;
private int age;
private String adress;
private String Dep;
public Employee(String name, int age, String adress, String Dep) {
this.name = name;
this.age = age;
this.adress = adress;
this.Dep = Dep;
}
public void printInfo() {
System.out.println(name +" "+ age +" "+ adress + " "+Dep);
}
// - 필드: 이름, 나이, 주소, 부서, 월급 정보를 필드로 선언
// - 생성자 : 이름, 나이, 주소, 부서를 지정하는 생성자 정의
// - 메소드 printInfo() : 인자는 없고 자신의 필드 이름, 나이, 주소, 부서를 출력
}