< 1 >
메서드
// Parent 클래스의 Method
public void method() { "부모입니다" }
// Child 클래스의 Method 오버라이딩
public void method() { "자식의 오버라이딩 메서드" }
// Child 클래스의 Method2번
public void method2() { "자식의 두번째 메서드" }
일반 코드
Parent parent = new Parent();
다형성 코드
Parent parent = new Child()
메서드를 호출했을때
결과는?
Parent parent = new Parent();
parent.method <= 부모입니다.
parent.method2 <= 에러
Parent parent2 = new Child();
parent2.method <= 자식의 오버라이딩 메서드
parent2.method2 <= 에러
♠\ 참조 /♠
( 특징 )
(1)
부모 = 자식 (다형성 코드)
상속관계에서만 가능
(2)
자동 형변환
부모 자료형 = (부모 자료형)자식 자료형
(3)
기존 소스(As-Is 소스 , 레가시 소스) , 새로운 소스를
만들어서 계속 바꿔 끼움
목적(장점)
실행시에 사용방법은 동일하지만 다양한 객체를 이용해서
다양한 실행결과를 나오도록 코딩하고 싶을 때 사용함
★ 중요
제한 사항
위의 코드를 사용할 때
1) Child 클래스의 속성(Attribute) 사용 못함
2) Parent 에 정의되지 않은 메서드(Method)를
사용하지 못한다.
< 2 >
실행 2번째
생성자
코드
// Parent 의 생성자
Parent () { 부모입니다. }
// Child 의 생성자
Child () { 자식입니다. }
main 코드
Parent parent = new Child();
// 결과는 ?
부모입니다.
자식입니다.
♠\ 참조 /♠
( 특징 )
(1)
Parent 객체, Child 객체 둘다
메모리(힙) 에 들어간다.
다만, 제한 사항이 있을 뿐
(2)
위의 코드 중 예시로
Parent parent = new Child(String name) {}
같은 생성자도 사용이 가능하다.
< 3 >
그렇다면 Child 객체의 속성 , 메서드를
어떻게 사용할 수 있을까?
( 특징 )
강제 형변환
자식 자료형 = (자식 자료형) 부모 객체
자식 객체로 원복
Parent parent = new Parent(); // 였다면
Child child = (Child)parent
'JAVA' 카테고리의 다른 글
Java - instanceof (0) | 2023.09.22 |
---|---|
Java - 다형성 (전략 패턴) (0) | 2023.09.22 |
Java - final(클래스 , 메소드) (0) | 2023.09.21 |
Java - ... 연산자 (스프레드 연산자) (0) | 2023.09.20 |
Java - 자동 속성 초기화 (0) | 2023.09.20 |