BackEnd/Java

[Java]반환형의 다형성(Polymorphism)

Hojung7 2024. 7. 30. 21:43

[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