본문 바로가기

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

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

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

강의 내용

[1] 다형성을 보장한다는 의미
[2] 추상 클래스와 다형성

 

[1] 다형성을 보장한다는 의미

부모가 자식에게 명령을 하면 자식이 무조건 동작(반응)해야 함

 

다형성을 보장하려면?

다형성의 전제 조건 4가지를 무조건 지켜야 함

(1) 클래스가 상속 관계여야 함
(2) 반드시 재정의(Override) 되어야 함
(3) UpCasting : 객체 생성 방법(자식 클래스들이 서로 다르게 반응하는 원리)
(4) 동적 바인딩

 

재정의를 하지 않으면?

다형성이 보장되지 않음
부모가 자식에게 명령했을 때 자식이 제대로 반응하지 않음(오동작)

Q. Dog와 Cat 클래스를 설계하고 동작시켜 보시오.
public class Animal {  // 동물 : 개와 고양이를 포괄
    public void eat() {
        System.out.println("?");  // 추상적인 표현
    }
}
public class Dog extends Animal {
    // 재정의를 하지 않음
}
public class Cat extends Animal {
    // 재정의를 하지 않음

    public void night() {
        System.out.println("밤에 눈에서 빛이 난다.");
    }
}
public class IsNotOverrideTest {
    public static void main(String[] args) {
        Animal an = new Dog();
        an.eat();

        an = new Cat();
        an.eat();
    }
}

 

재정의를 하면?

다형성이 보장됨

다형성을 보장하려면 추상 클래스 또는 인터페이스를 통해 재정의를 프로그램에서 강제로 하도록 만들어야 함

 

[2] 추상 클래스와 다형성

추상 클래스(불완전한 클래스)

추상 메서드를 가지고 있는 클래스
불완전한 동작으로 인해 객체를 생성할 수 없음
혼자서는 동작을 할 수 없기 때문에 자식 클래스가 반드시 있어야 함

추상 메서드를 갖는 부모를 상속 받으면 반드시 재정의해야 함

 

추상 메서드(불완전한 메서드)

메서드의 구현부가 없는 메서드
반드시 자식이 완전하게 재정의해야 함
자식 클래스에서 재정의하지 않으면 오류로 인해 실행할 수 없음
부모의 불완전한 메서드를 물려받으면 자식도 불완전한 클래스가 되어 버림
부모는 불완전한 클래스이지만, 상속 받은 자식은 완전해야 함

Q. Dog와 Cat 클래스를 설계하고 동작시켜 보시오.
// 추상 클래스(불완전한 클래스)
public abstract class Animal {  // 동물 : 개와 고양이를 포괄
    public abstract void eat();  // 추상 메서드(불완전한 메서드)
    public void move() {  // 구현 메서드
        System.out.println("무리를 지어 이동한다.");
    }
}
public class Dog extends Animal {
    // 재정의를 반드시 해야 함
    @Override
    public void eat() {
        System.out.println("개처럼 먹다.");
    }
}
public class Cat extends Animal {
    // 재정의를 반드시 해야 함
    @Override
    public void eat() {
        System.out.println("고양이처럼 먹다.");
    }

    public void night() {
        System.out.println("밤에 눈에서 빛이 난다.");
    }
}
public class AbstractClassTest {
    public static void main(String[] args) {
        // 추상 클래스는 단독으로 객체를 생성할 수 없지만,
        // Animal ani = new Animal();  // cannot be instantiated

        // 부모의 역할은 가능
        Animal ani = new Dog();
        ani.eat();
        ani.move();

        ani = new Cat();
        ani.eat();
        ani.move();
        ((Cat) ani).night();
    }
}

 


 

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

 

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

https://bit.ly/48sS29N

 

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

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

fastcampus.co.kr