밤과라임
3k
2020-03-20 02:07:15
4
267

자바 상속 질문입니다.


여러 VO클래스에서 name, number 등등 여러 변수가 중복으로 사용어

중복으로 사용하는 것을 baseVO 클래스로 두고 이를 상속받아 쓰면되겠다 생각했는데

상속받은 자식클래스에서 값을 할당할때 baseVO에 들어있는 값을 넣으려면 super로 넘겨야 할 텐데,

이렇게 VO를 활용하는건 뭔가 이상하고 코드도 잘 보지 못했습니다.

중복되는 변수가 있을때 보통 어떻게 쓰나요?

그냥 baseVO 타입 변수를 각 클래스 내에 넣어 쓰나요? 

상속을 통해 해결하진 않는지 궁금하여 질문을 드립니다.

0
0
  • 답변 4

  • fender
    17k
    2020-03-20 08:17:37

    어떤 두 유형 간에 상속 관계가 성립하는지 확인하는 가장 좋은 방법은 'is-a'를 대입해 보는 것입니다.

    즉, '동물'과 '고양이'라는 개념이 있다면 "Cat is a(n) Animal"이 되기 때문에 상속으로 처리하는 것이 합당합니다.

    만일 말씀하신 VO가 '동물'이나 '고양이' 처럼 깔끔하게 정의되지 않는다면 클래스 설계가 잘못된 것이고, 두 VO 간에 'is-a' 관계가 성립한다면 상속으로 일반화 할 수 있습니다.

    0
  • 밤과라임
    3k
    2020-03-20 11:20:09

    @fender

    저도 고민 많이 하게 된 부분인데 객체들의 중복사용되는 부분을 뽑아 baseParent객체를 만드려고 합니다.

    따라서 공통점을 모았기 때문에 is-a가 조금 억지가 될 수 있지만 성립한다고 생각합니다.

    고민하는 이유는 객체의 중복사용되는 필드를 위해 상속을 사용하고, 객체를 생성할때, 중복사용된 필드값들까지

    생성자에 넣어, super를 통해 할당하고, 읽는게 

    상속의 개념으로보면 문제없어보이지만 왠지 이질감이 들어서 질문을 남깁니다. 

    중복필드의 경우 어떻게 보통 해결할까요?

    그냥 뎁스가 내려가더라도 인스턴스화 시키는게 맞을까요??


    0
  • fender
    17k
    2020-03-20 11:57:51

    원론적으로 is-a 관계가 명확하면, 상속으로 처리하고 생성자를 통해 속성값을 설정하는 것이 자연스러운 접근이라고 생각합니다.

    0
  • 밤과라임
    3k
    2020-03-22 14:18:43 작성 2020-03-22 14:21:10 수정됨

    중복되는값들만 따로 빼지만 객체로 봤을때 is - a 라 하기엔 개념적으로 깔끔하디가 않아 결합으로 결정했습니다. 

    답변 감사합니다.

    0
  • 로그인을 하시면 답변을 등록할 수 있습니다.