본문 바로가기

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

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

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

강의 내용

[1] 다형성 활용(다형성 인수)
[2] 다형성 활용(다형성 배열)

[1] 다형성 활용(다형성 인수)

다형성 인수

부모 클래스를 활용하면 자식 클래스들을 쉽게 처리할 수 있다.
*인수/인자/매개변수 : 메서드 용어
*다형성 인수 : 하나의 타입으로 여러 타입을 받는 것
*Overloading : 메서드의 이름은 같지만, 타입이 다름

Q. Dog와 Cat 클래스를 설계하고 동작시켜 보시오.
main() 안에서 만들어진 Dog, Cat 타입을 다른 메서드로 이동하는 방법

*오버로딩(Overloading) : 앞으로 추가 될 다른 타입(토끼, 사자, 하마)을 받기 위한 메서드를 만들어야 함(비효율)
*Animal : 자식(Dog, Cat)의 타입을 받음
public class PolyMethodTest {
    public static void main(String[] args) {
        Dog d = new Dog();
        display(d);  // display(Dog d)

        Cat c = new Cat();
        display(c);  // display(Cat c)
    }

    private static void display(Dog d) {  // Overloading
        d.eat();
    }

    private static void display(Cat c) {  // Overloading
        c.eat();
    }
}

하나의 메서드로 처리하려면 두 타입(Dog, Cat)을 받을 수 있는 타입으로 인자를 적어야 함
public class PolyMethodTest {
    public static void main(String[] args) {
        Dog d = new Dog();
        display(d);

        Cat c = new Cat();
        display(c);
    }

    private static void display(Animal ani) {  // 다형성 인수
        ani.eat();
    }
}

 

instanceof로 타입 검사

*instanceof : 타입 확인 연산자

Q. Dog와 Cat 클래스를 설계하고 동작시켜 보시오.
public class PolyMethodTest {
    public static void main(String[] args) {
        Dog d = new Dog();
        display(d);

        Cat c = new Cat();
        display(c);
    }

    private static void display(Animal ani) {  // 다형성 인수
        ani.eat();

        // Cat 타입으로 받은 경우에만 실행
        if (ani instanceof Cat) {  // Cat 타입으로부터 만들어진 ani임을 확인
            ((Cat)ani).night();  // Cat의 고유한 기능
        }
    }
}

 

[2] 다형성 활용(다형성 배열)

다형성 배열(상위 타입 배열)

배열은 동일한 자료형만 저장 가능하지만, 부모 타입의 배열은 자식 타입을 저장할 수 있다.
하나의 배열에 서로 다른 타입 저장 가능

Q. Dog와 Cat 클래스를 설계하고 동작시켜 보시오.
main()안에서 만든 타입을 바구니(배열)에 담아 다른 메서드로 이동
Dog, Cat : 타입 불일치(서로 다른 타입을 부모 타입의 배열에 넣음)
public class PolyArrayTest {
    public static void main(String[] args) {
        Dog d = new Dog();
        Cat c = new Cat();

        // Dog, Cat을 저장할 배열을 생성하시오.
        // Animal[] ani = {new Dog(), new Cat()};  // 생성과 동시에 초기화
        
        Animal[] ani = new Animal[2];  // 다형성 배열
        ani[0] = d;
        ani[1] = c;
        display(ani);
    }

    public static void display(Animal[] ani) {
        for (int i = 0; i < ani.length; i++) {
            ani[i].eat();

            if (ani[i] instanceof Cat) {
                ((Cat) ani[i]).night();
            }
        }
    }
}

 


 

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

 
본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.
https://bit.ly/48sS29N

 

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

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

fastcampus.co.kr