업캐스팅, 다운캐스팅

2022. 2. 23. 18:42·Programming/Java

캐스팅이란?

- 타입을 변환하는 것. 형변환

- 부모와 자식 클래스 간 형변환 가능

 

Upcasting

- 자식 클래스의 객채가 부모 클래스 타입으로 형변환 되는 것

- p는 Student 객체를 가리키지만, p는 Person 타입이기 때문에 Person 멤버에만 접근 가능하다.

class Person{
	String name;
	Person(String name){
		this.name = name;
	}
}

class Student extends Person{
	String check;
	Student(String name){
		super(name);
	}
}

public class Main{
	public static void main(String[] args){
		Student s = new Student("홍길동");
		Person p = s;	// 업캐스팅
		p.name = "이름이다.";

		p.check = "컴파일 에러 발생";	// 컴파일 에러 발생
	}
}

 

Downcasting

- 업캐스팅 된 것을 다시 원상태로 돌리는 것

- 하위 클래스로 다운캐스팅 시, 타입을 명시적으로 지정

- Student s=(Student) p

public class Main{
	public static void main(String[] args){
		Person p = new Student("홍길동");
        
		Student s = (Student)p;	// 다운캐스팅
		s.name = "김유신";
		s.check = "check!";
	}
}

 

'Programming > Java' 카테고리의 다른 글

추상 클래스  (0) 2024.10.08
SOLID, 객체 지향 설계 원칙  (0) 2022.02.25
ArrayList vs LinkedList  (0) 2022.02.23
Collections.sort()  (0) 2022.02.23
Wildcard <?>  (0) 2022.02.22
'Programming/Java' 카테고리의 다른 글
  • 추상 클래스
  • SOLID, 객체 지향 설계 원칙
  • ArrayList vs LinkedList
  • Collections.sort()
사랑우주인
사랑우주인
  • 사랑우주인
    lovelyAlien
    사랑우주인
  • 전체
    오늘
    어제
  • 글쓰기
    관리
    • 분류 전체보기 (209)
      • Programming (4)
        • Spring (28)
        • Java (46)
        • JPA (2)
        • 디자인 패턴 (5)
        • 개발&아키텍처 (0)
      • Network (14)
      • OS (19)
      • Database (1)
      • Kubernetes (0)
      • Kafka (2)
      • Algorithm (49)
        • BaekJoon (1)
        • Programmers (19)
        • Algorithm (5)
        • Socar (2)
        • LeetCode (19)
      • Interview (2)
      • Issues (2)
      • DotJoin (1)
      • Git (4)
      • 독서 (3)
      • 끄적끄적 (1)
      • 외부활동 (26)
        • 항해플러스 (2)
        • JSCODE 네트워크 (19)
        • JSCODE 자바 (5)
      • SQL (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • GitHub
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    BFS
    fcfs
    운영체제
    JSCode
    추상화 클래스
    OS
    pacific atlantic water flow
    Oauth2
    wildcards
    AuthenticationSuccessHandler
    minimum number of arrows to burst balloons
    Process
    runner 기법
    lower bounded wildcards
    socar
    LinkedList
    clone graph
    @JsonProperty
    RR
    제네릭
    디자인 패턴
    준영속 엔티티
    algorithm
    Reorder List
    rotting oranges
    @JsonNaming
    Thread
    Generic
    Climbing Stairs
    트랜잭션
  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.1
사랑우주인
업캐스팅, 다운캐스팅
상단으로

티스토리툴바