본문 바로가기

Java/[패스트캠퍼스] 100% 환급 챌린지

패스트캠퍼스 환급챌린지 43일차 미션 (3월 14일) : 시그니처 백엔드 Path 초격차 패키지 Online. 강의 후기

https://fastcampus.co.kr/dev_online_besignature
수강 강의명

강의 내용

[1] 부모와 자식간의 형 변환
[2] UpCasting과 DownCasting

 

[1] 부모와 자식간의 형 변환

형 변환

(1) 기본 자료형(PDT) 형 변환
int a = (int) x;

(2) 클래스 형 변환

A a = new A();  // 타입 일치
B b = new A();  // 타입 불일치(상속 관계)

 

B b = new A();

사용자는 B 클래스를 통해 A 클래스를 동작시킬 수 있다.
(1) A 클래스와 B 클래스가 상속 관계여야 함
(2) B 클래스의 특정 동작이 A 클래스에 재정의 되어야 함

*A : 자식 클래스, B : 부모 클래스

*B : 사용자와 A 사이의 인터페이스 역할(User → B → A.class)

 

자식 → 부모(UpCasting, 자동 형 변환)

부모(1) : 자식(n)

여러 자식들은 하나의 부모에 들어감

자식(작은 타입) - 부모(큰 타입) : 자식들이 부모에게 갈 때는 자동으로 들어갈 수 있음

부모 - 자식A
        - 자식B
        - 자식C
p(부모) = new 자식A();
p(부모) = new 자식B();
p(부모) = new 자식C();

 

부모 → 자식(DownCasting, 강제 형 변환)

자식(n) : 부모(1)

부모는 여러 명의 자식을 가리킴

부모(큰 타입) - 자식(작은 타입) : 부모가 자식에게 갈 때는 어떤 자식의 타입으로 바꿀 건지를 정확히 알아야 함

UpCasting이 되어야 DownCasting이 된다.

자식A - 부모
자식B -
자식C -
c(자식A) = (자식A)부모;
c(자식B) = (자식B)부모;
c(자식C) = (자식C)부모;

 

Q. Dog와 Cat 클래스를 설계하고 동작시켜 보시오.
public class ObjectCastingTest {
    public static void main(String[] args) {
        // Animal ---> Dog, Cat
        // eat() : 부모가 자식에게 동일한 메세지를 보냄("먹어라")
        Animal ani = new Dog();
        ani.eat();  // Dog에게 메세지를 보냄(명령) -> 개처럼 먹다(반응)

        ani = new Cat();  // UpCasting
        ani.eat();  // Cat에게 메세지를 보냄(명령) -> 고양이처럼 먹다(반응)
        // ani.night();  // DownCasting
    }
}​

 

[2] UpCasting과 DownCasting

상속 관계에서 객체를 생성하는 방법

Upcasting : 자식 클래스의 타입을 부모 타입으로 받는 것(자동)
Downcasting : 부모 클래스의 타입을 자식 클래스의 타입으로 바꾸는 것(강제)

Q. Dog와 Cat 클래스를 설계하고 동작시켜 보시오.
Cat c = x;
(Cat)가 없으면 x가 어떤 타입인지 알 수 없음(Cat? Dog?)


Cat c = (Cat)x;
x라는 부모 타입을 Cat 타입으로 형을 바꿔서 Cat 타입으로 받아야 함
public class ObjectCastingTest {
    public static void main(String[] args) {
        // Animal ---> Dog, Cat
        // eat() : 부모가 자식에게 동일한 메세지를 보냄("먹어라")
        Animal ani = new Dog();
        ani.eat();  // Dog에게 메세지를 보냄(명령) -> 개처럼 먹다(반응)

        ani = new Cat();  // UpCasting
        ani.eat();  // Cat에게 메세지를 보냄(명령) -> 고양이처럼 먹다(반응)

        // Cat c = (Cat)ani;
        // c.night();  // DownCasting
        ((Cat)ani).night();  // DownCasting : 한 줄로 표현
    }
}​

 


 

수강 화면수강 화면
수강 화면

 

본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.

https://bit.ly/48sS29N

 

패스트캠퍼스 [직장인 실무교육]

프로그래밍, 영상편집, UX/UI, 마케팅, 데이터 분석, 엑셀강의, The RED, 국비지원, 기업교육, 서비스 제공.

fastcampus.co.kr