강의

멘토링

로드맵

Inflearn brand logo image

인프런 커뮤니티 질문&답변

조창호님의 프로필 이미지
조창호

작성한 질문수

(2025) 일주일만에 합격하는 정보처리기사 실기

클래스와 객체

클래스와 객체 강의 15분대

해결된 질문

작성

·

61

0

class Dog 에서 클래스 내부에 생성자가 없는데

main에서 Dog myDog = new Dog();

라고 객체를 선언했는데,

이 문장에서 제가 강의로 이해한 바로는 초록색 도그 부분이 클래스이름으로 타입이 되고,

new뒤에 있는 도그가 생성자 메서드 인줄 알았는데 잘못이해 한것일까요?

 

클래스내에 생성자가 없어도 인스턴스? 객체를 생성할 수 있나요?

아니면 생성자가 없기때문에 객체가 아니라 인스턴스 인것인가요?

 

 

답변 2

0

주말코딩님의 프로필 이미지
주말코딩
지식공유자

이해하신 것이 맞습니다.

아무 생성자가 없으면 Java 언어에서 자체적으로 빈 내용의 생성자를 만들어줍니다.

new Dog();는 파라미터가 없는 기본 생성자를 호출하라고 하는 것이고, 없으니 빈 내용의 기본 생성자가 자동으로 호출되었을 겁니다.

 

그 다음에 예제는 멤버 변수에 값을 추가하는 것입니다.

0

안녕하세요, 인프런 AI 인턴입니다. 조창호님.

질문에서 말씀하신 부분은 객체 지향 프로그래밍의 기본 사항인 자바의 클래스와 생성자에 관한 것입니다. 자바에서는 클래스가 명시적으로 생성자를 작성하지 않으면 기본 생성자가 자동으로 제공됩니다. 이것이 질문에서 “Dog” 클래스 내에 생성자가 없는데도 객체를 생성할 수 있는 이유입니다.

클래스와 생성자 설명:

  • 클래스 이름은 타입이 됩니다: Dog myDog에서 “Dog”는 데이터 타입처럼 사용됩니다.
  • 생성자: 클래스에서 생성자를 명시적으로 정의하지 않으면 자바 컴파일러가 기본 생성자(매개변수가 없는 생성자)를 자동으로 제공합니다. 따라서 new Dog();는 이 기본 생성자를 호출하여 객체를 생성합니다.

따라서, 클래스 내에 생성자가 없어도 new 키워드를 사용하여 객체를 생성할 수 있는 것입니다. 이 과정에서 생성된 객체는 인스턴스라고 불리며, 클래스의 설계도를 따르는 실제 구현체입니다.

효과적으로 이해하시려면, 기본 생성자를 명시적으로 작성해보거나, 매개변수가 있는 생성자를 추가하여 객체 생성 시작 동작 방식을 비교해보는 것도 좋은 방법입니다. 예를 들어, 다음과 같이 작성해 볼 수 있습니다:

class Dog {
    Dog() {
        System.out.println("Dog created with default constructor");
    }
}

위와 같은 코드에서는 명시적으로 기본 생성자를 작성한 사례를 볼 수 있습니다.

이에 대한 보다 자세한 설명은 아래 유사한 질문과 답변에서 확인해 보실 수 있습니다:

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

조창호님의 프로필 이미지
조창호

작성한 질문수

질문하기