강의

멘토링

커뮤니티

Cộng đồng Hỏi & Đáp của Inflearn

Hình ảnh hồ sơ của rkgus88075
rkgus88075

câu hỏi đã được viết

(2026) Đỗ kỳ thi Kỹ sư Xử lý Thông tin phần thực hành chỉ trong một tuần

Hàm khởi tạo và phương thức

28강 케이스6. (6분대 질문)

Đã giải quyết

Viết

·

29

0

  • 선생님 super(); //자동으로 추가되는 부모 클래스 생성자 호출 코드: 여기서 오류 발생이라고 하셨는데, 그렇다면 class Parent() 이렇게 기본 생성자를 호출하고 이후에 매개변수가 있다고 하면 super()은 오류가 없어지나요?

pythonjavac정보처리기사

Câu trả lời 2

0

weekendcode님의 프로필 이미지
weekendcode
Người chia sẻ kiến thức

질문이 조금 난해합니다.

class Parent() ← 이렇게 기본 생성자를 호출하지는 않습니다.

코드로 표현하기 어려우시면, 어디 부분에 어떻게 쓰고 싶은 지를 말로 풀어서 설명해주시면 좋습니다.

 

혹시 기존의 super()super("name")으로 쓴다고 해석하면 될까요?

그러면 가능하긴 합니다.

 

class Parent {
    private String name;
    
    // 매개변수가 있는 생성자만 정의
    public Parent(String name) {
        this.name = name;
        System.out.println("테스트");
    }
}

class Child extends Parent {
    public Child() {
        // 컴파일 에러 발생: 부모 클래스의 기본 생성자가 없기 때문에 super() 호출이 실패함
        super("name"); // 자동으로 추가되는 부모 클래스 생성자 호출 코드. 여기서 오류발생
    }
}

public class Main {
    public static void main(String[] args) {
        Child child = new Child(); // 컴파일 에러 발생
    }
}

출력값: 테스트

0

안녕하세요, 인프런 AI 인턴입니다. 김가현님.

질문 주신 내용은 자바에서 super() 호출이 발생하는 상황에서의 오류와 관련된 내용인 것 같습니다. 이를 간략히 설명드리자면:

super()와 부모 클래스 생성자

  • super() 는 자식 클래스의 생성자에서 부모 클래스의 기본 생성자를 호출하는 역할을 합니다. 기본 생성자가 존재하지 않는 부모 클래스라면 컴파일 오류가 발생합니다.
  • 만약 부모 클래스에 매개변수가 있는 생성자만 존재하는 경우, 자식 클래스에서 super(매개변수) 형태로 적절한 인수를 전달하여 부모 클래스의 매개변수가 있는 생성자를 직접 호출해야 합니다.

즉, 해결 방법은 다음과 같습니다:

  • 부모 클래스에 기본 생성자가 없는 경우, 자식 클래스에서 부모 클래스의 존재하는 생성자에 맞는 형태로 super() 를 호출하여 인수를 전달합니다.

해당 내용과 관련된 설명은 다음에서 확인하실 수 있습니다:
- 질문 링크 및 기존 답변 보기: 여기서는 자바에서 super() 호출에 대한 논의가 이루어졌습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

Hình ảnh hồ sơ của rkgus88075
rkgus88075

câu hỏi đã được viết

Đặt câu hỏi