업캐스팅, 다운캐스팅

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
  • 링크

  • 공지사항

  • 인기 글

  • 태그

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

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

티스토리툴바