[Parent]
package pkg1.dto;
public class Parent {
// 필드
private String lastName = "김";
private int money = 50000;
// 기본 생성자
public Parent() {
super(); // 부모(Object) 생성자 호출
}
// 매개 변수 생성자
public Parent(String lastName, int money) {
super();
this.lastName = lastName;
this.money = money;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public int getMoney() {
return money;
}
public void setMoney(int money) {
this.money = money;
}
// toString() 오버라이딩
@Override
public String toString() {
return "Parent : " + lastName + "/" + money;
}
}
[Child]
package pkg1.dto;
// Parent 상속
public class Child extends Parent {
private String car;
public Child() {
super(); // 안쓰면 컴파이러가 추가해줌 !!
}
// 자식 객체 생성 시
// 자식 + 부모 필드 한번에 초기화
public Child(String lastName, int money, String car) {
super(lastName, money);
this.car = car;
}
public String getCar() {
return car;
}
public void setCar(String car) {
this.car = car;
}
// Parent의 toStrint() 오버라이딩 하기
@Override
public String toString() {
return "Child : " + getLastName() + "/"
+ getMoney() + "/"
+car;
}
}
[Service]
/**
* 전달 받은 값에 따라 알맞은 객체를 만들어서 반환하는 메서드
* @param num : 1 - Object / 2 - Parent / 3- Child
* @return 생성된 객체 반환
*/
public Object getInstance(int num) {
if(num == 1) return new Object();
// 생성된 객체 타입 : Object
// 주소 : 0x100
if(num == 2) return new Parent();
// 생성된 객체 타입 : Parent
// 주소 : 0x200
return new Child();
// 생성된 객체 타입 : Child
// 주소 : 0x300
}
public void test2() {
Object o1 = getInstance(1); // Object 객체, 0x100
// 부모 참조변수 = 자식 객체 -> 업 캐스팅 적용
Object o2 = getInstance(2); // Parent 객체, 0x200
Object o3 = getInstance(3); // Child 객체, 0x300
// 매개 변수의 다형성 적용 확인 메서드 호출
printObject(o1);
printObject(o2);
printObject(o3);
}
#결과

'BackEnd > Java' 카테고리의 다른 글
| [Java]상속(Inheritance) (0) | 2024.07.31 |
|---|---|
| [Java]다형성(Polymorphism) 바인딩 (0) | 2024.07.31 |
| [Java]매개 변수의 다형성 (Polymorphism) (0) | 2024.07.30 |
| [Java]OOP 메서드(method) (0) | 2024.07.25 |
| [Java]OOP Static (0) | 2024.07.23 |