진호진호
Archive
진호진호
  • Me
    • 공부
      • Java
      • 자료구조
    • 일상
      • 책
      • 해외여행
      • 국내여행
      • 돌아보기
    • etc

블로그 메뉴

  • 홈
  • 태그
  • 방명록

인기 글

태그

  • 여와 해변
  • 깡돼후
  • 국내여행
  • 순천만 국가정원
  • 하스스톤
  • 시작해요 언리얼
  • 여수 밤바다
  • 타입 변환
  • 언리얼 엔진 5
  • Java
  • 오늘부터 개발자
  • 자바
  • 만습지
  • 파이널에디션
  • 비전공자를 위한 이해할 수 있는 IT 지식
  • 상속
  • 이재용 어묵
  • 23년
  • 여행
  • 아무말

최근 댓글

최근 글

hELLO · Designed By 정상우.
진호진호

Archive

자바 상속 - 클래스 타입 변환
공부/Java

자바 상속 - 클래스 타입 변환

2024. 2. 14. 15:51

 

타입 변환

기본적으로 up-casting만 가능, 필요시 자동 변환 됨.

 

자식 클래스는 부모 클래스 타입으로 사용될 수 있다. 자식 클래스는 기본적으로 부모 클래스의 모든 필드와 메서드 요소를 가지고 있기 때문에 자동 타입변환이 되어도 지장이 없다.

 

참조 변수 p의 선언 타입 참조변수 p의 실제 타입
참조 변수 선언에 사용된 타입, Animal 객체 생성에 사용된 클래스, Human
호출 가능한 메소드 집합을 결정 실제 호출될 클래스를 결정
p.eat() 호출 가능 p.eat() / Human의 eat()이 호출 됨
p.think() 호출 불가능 Human의 think() 호출하려면 (Human)p.think()

 

강제 타입 변환(Casting)

부모 타입을 자식 타입으로 변환하는 것. 자식 타입이 부모 타입으로 자동 변환이 일어난 후, 다시 자식 타입으로 변환 할 때 강제타입변환을 사용할 수 있다.

 

예제

 

class Parent {
    static void who() { System.out.println("Parent’s static who"); }
    void show() { System.out.println("Parent’s instance show"); }
}
class Child extends Parent {
    static void who() { System.out.println("Child’s static who"); }	// 숨김
    void show() { System.out.println("Child’s instance show"); } 	// 재정의
}
public class java {
    public static void main(String[] args) {
        System.out.println("Child c = new Child: ");
        Child c = new Child();
        c.who(); c.show();

        System.out.println("Parent p = new Child: ");
        Parent p = new Child();
        p.who(); p.show();

        System.out.println("Child c2 = new Child - (Parent)c2:  ");
        Child c2 = new Child(); 
        ((Parent)c2).who(); ((Parent)c2).show();
    }
}

 

실행결과 :

 

Child c = new Child: 
Child’s static who
Child’s instance show
Parent p = new Child: 
Parent’s static who
Child’s instance show
Child c2 = new Child - (Parent)c2:  
Parent’s static who
Child’s instance show

 

메소드가 자식 클래스에서 오버라이딩되었다면 오버라이딩된 메소드가 호출된다. → 다형성

 

'공부 > Java' 카테고리의 다른 글

자바 예외 처리, Checked Exception와 Unchecked Exception  (0) 2024.02.27
다형성 Polymorphism  (0) 2024.02.22
자바 추상 클래스와 인터페이스  (0) 2024.02.14
자바 상속 - super, this 예제  (0) 2024.02.08
    '공부/Java' 카테고리의 다른 글
    • 자바 예외 처리, Checked Exception와 Unchecked Exception
    • 다형성 Polymorphism
    • 자바 추상 클래스와 인터페이스
    • 자바 상속 - super, this 예제
    진호진호
    진호진호
    기록보관소

    티스토리툴바