자바 super 관련 질문

조회수 972회

공부하다가 갑자기 생각난 질문입니다.

super로 상위 클레스의 생산자를 받을 때 구분을 그 생산자의 변수들로 하는 것 같더군요

ex) 상위 클레스의 생산자가 Character(String name, int hp)와 Age(int age) 이면 super(name, hp) 와 super(age) 식으로.

그렇다면 만약 이름은 다르지만 모든 변수가 같은 생산자들을 가져올 때는 어떻게 해야 하나요?

ex)Player(String name, int hp) 와 Enemy(String name, int hp)가 상위 클레스에 있으면
     하위 클레스에서 상속받으려면 super(name, hp)와 super(name, hp) 로 써야 하는데
     이렇게 하면 구분이 되지 않아 컴파일 에러 나지 않나요?

그리고 만약 이름은 다르지만 변수의 이름이 같은 생산자들을 동시에 상속받는 방법이 있으면 알려주시면 감사하겠습니다.

  • 설명이 조금 어렵네요. 코드로 예를 들어주시겠어요? 편집요청빌런 2017.9.28 00:48
  • Player클래스와 Enemy클래스를 동시에 상속받을 수는 없을거고.. 혹시 Character 클래스를 Player 클래스가 상속받고, 또 Player 클래스를 Enemy클래스가 상속받는 상황을 말하는건가요? 알 수 없는 사용자 2017.9.28 11:58

2 답변

  • 좋아요

    0

    싫어요
    채택 취소하기

    자바는 다중상속이 제공되지 않습니다.

    두개의 직계 부모 클래스가 존재할 순 없습니다.

    결국 super 는 단일 직계 상속 클래스의 오버로딩되어 있는 생성자중 파라미터 타입에 맞는 1개만 호출합니다.

  • 자바는 단일 상속만을 지원하며, 생성자의 메서드 시그니처가 동일하면 컴파일 에러가 발생합니다. 질문의 설명이나 용어가 이해하기 힘든내용들이 많은데 질문하신 상황은 자바에서 발생하지않습니다.

    • (•́ ✖ •̀)
      알 수 없는 사용자

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

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

(ಠ_ಠ)
(ಠ‿ಠ)