클래스와 객체 강의 15분대
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");
}
}
위와 같은 코드에서는 명시적으로 기본 생성자를 작성한 사례를 볼 수 있습니다.
이에 대한 보다 자세한 설명은 아래 유사한 질문과 답변에서 확인해 보실 수 있습니다:
- 자바에서의 기본 생성자와 명시적 생성자: 이 질문에서는 생성자가 없을 때 객체가 어떻게 생성되는지 자세히 설명되어 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
필기자료 사라졌나요?(실기 일주일만에 안돼서 재도전-_-)
0
50
2
26년 1회 실기 해설 강의
0
67
2
53번 4-1 자료 오류 있는 것 같습니다.
0
73
2
7번문제
0
60
2
C언어 변형문제 9번문제 Pdf 수정요청
0
48
2
메서드 오버드라드
0
51
2
실수
0
46
1
공부 우선순위 우선강의 알려주세요
0
90
1
생성자 호출순서 강의 10번 문제 30분대 질문입니다
0
49
2
25년 2회 기출 5:40 질문입니다.
0
43
2
모의고사1회 3번 파이썬문제
0
75
2
C언어 출제변형 6번 문제
0
50
2
c언어 출제변형 강의 질문
0
32
2
28:40
0
33
2
C : 언어 배열과 문자열 수업자료
0
31
2
파이썬 리스트, 딕셔너리 질문
0
43
2
모의고사 관련 질문 건
1
69
3
자료 내용 오류
0
64
2
정적 변수, 정적 메서드(static) v2
0
51
2
v1.2 와 v0.91 PDF
0
104
1
업캐스팅 (부모형태, 자식생성자)
0
51
2
정보처리산업기사 준비중입니다.
0
74
2
실기 D -6
0
105
2
(기출) 2024년 2회 기출문제 - 이론 포함 22분32초 질문입니다
0
60
3





