자바 객체생성(?)에 대하여

조회수 1626회

자바에서 객체를 생성할 때 Box<String> box = new Box<>();와 같이 Box-Box를 사용 할 때가 있고 Set<String> set1 = new HashSet<>(); 와 같이 Set-HashSet을 사용 할 때가 있더라구요. 1.상속때문에 Set-HashSet을 사용하는것 같은데 2.HashSet은 이미 Set을 상속 받고 있는상태라 HashSet<String> set1 = new HashSet<>();를 사용하면 상관 없지 않나요? 3.Set-HashSet을 사용해야 되는 이유가 뭔가요?

1, 2, 3 질문을 풀고 싶어요. 다른 틀린부분이 있다면 설명해주세요.

1 답변

  • 좋아요

    1

    싫어요
    채택 취소하기

    객체지향에 대한 이해가 필요한 질문입니다.

    예를들면 모든 동물은 먹고 잡니다. 다만 방법은 동물마다 다를뿐이지 행위 즉 먹는다 잔다는 다 해야 하는 행위입니다.

    Animal tiger = new Tiger();
    Animal lion = new Lion();
    
    // 행위를 추상화함
    public void processEat(Animal animal){
        animal.eat();
    }
    
    public void processSleep(Animal animal){
        animal.sleep();
    }
    
    processEat(tiger);
    processSleep(tiger);
    
    processEat(lion);
    processSleep(lion);
    
    Tiger tiger = new Tiger();
    
    // 동물마다 행위를 생성함
    public void processEat(Tiger tiger){
        tiger.eat();
    }
    
    public void processSleep(Tiger tiger){
        tiger.sleep();
    }
    
    Lion lion = new Lion();
    public void processEat(Lion lion ){
        lion.eat();
    }
    
    public void processSleep(Lion lion ){
        lion.sleep();
    }
    ...
    ...
    

    두번째 얘제의 경우 먹고 잔다를 실행해야 하는 동물이 천마리라면? processEat, processSleep 를 천개 만들어야 합니다.

    그러나 첫번째 예제라면 추상화가 되어 있기 때문에 즉 모든 동물은 Animal 을 implement 했기 때문에 수행은 하나의 메소드로 가능해집니다.

    만약...prcessEat 메소드를 수정해야 되는 경우가 발생한다면...두번째 예제 방식이면 천개의 메소드를 수정해야 됩니다.

    객체지향의 잇점을 한번 고민해보시기 바랍니다.

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)