inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

나도코딩의 자바 기본편 - 풀코스 (20시간)

상속 (전반전)

상속에서 생성자를 굳이 왜만드는건가요?

해결된 질문

379

크림코딩

작성한 질문수 9

0

public class SpeedCam{
	public String name;
	
	
	public SpeedCam() {
		this.name = name;
	}
	
	
}
public SpeedCam() 생성자를 만들어서
this name 을 받는건데

그냥 public String name = "과속 단속 카메라";
이렇게 쓰면 되지않나요? 

왜 생성자를 써야하는지 궁금합니다.

java oop

답변 1

0

나도코딩

안녕하세요?

말씀하신 것처럼 이 예제에서는 굳이 생성자를 만들지 않고 인스턴스 변수를 생성함과 동시에 초기화를 하셔도 무방합니다. 어차피 SpeedCam 생성자 내에서 "과속 단속 카메라" 라는 고정 값으로 설정하기 때문이죠. 이렇듯 어떤 클래스로부터 객체를 만들 때 모든 객체에 기본적으로 사용되는 값이 있는 경우 변수 생성과 동시에 초기화를 하면 코드를 읽기도 좋아지고 값 확인도 수월해집니다.
하지만 만약 SpeedCam 클래스 객체를 만들 때 서로 다른 종류의 과속 단속 카메라 정보를 사용한다면, 가령 "일반 과속 단속 카메라", "광각 과속 단속 카메라", "번호판 확대 과속 단속 카메라" 등등 각각의 이름으로 객체를 만들게 되는 경우에는 생성자를 만들고 생성자의 매개변수로 SpeedCam(String name) 과 같이 이름을 받도록 하여 생성자 내에서 초기화를 해야 합니다.

정리하면 이렇습니다.
1) 모든 객체에 기본적으로 사용되는 값을 사용하는 경우 변수 생성과 동시에 값 설정
2) 서로 다른 값이 사용될 수 있는 경우 생성자에서 전달 받아서 값 설정

예제는 이렇습니다.
1) 은 다음과 같이 생성자 없이 x 변수에 기본값인 0 을 넣는 경우입니다.

public class MyClass {
    public int x = 0;
    ...
}

2) 는 객체를 생성할 때 전달값을 받아서 생성자에서 넣는 경우이며, 어떤 값이 될지는 모르는 경우입니다.

public class MyClass {
    public int x;  
    public MyClass(int x) {
        this.x = x;
    }
    ...
}

생성자에서는 인스턴스 변수의 값 설정 외에도 다른 추가적인 작업을 할 수도 있습니다. 객체가 생성됨과 동시에 반드시 이뤄져야 하는 동작이 있다면 생성자에서 처리를 하면 별도의 메소드를 호출할 필요 없이 객체 생성만으로도 원하는 동작을 수행할 수 있게 됩니다.

감사합니다 😊

0

크림코딩

감사합니다 상세히 예를들어 설명해주시니 이해가 되요!

자바를 처음 배울 때 이런 고민이 드는 게 정상일까요?

1

146

2

static이 뭐였는지 기억이 안나요 ㅜㅜ

0

120

2

Iterator (알 수 없음) 데이터 삭제 후 초기화 관련 문의

0

73

1

사고력 키우는 법이 어떤게 있나요?

0

94

2

getter setter

0

103

2

섹션9. 66 메소드 오버로딩 시 질문이 있습니다.

0

80

1

안녕하세요 갑자기 프로그램 에러가 떠서 안되네요

0

77

2

변수 이름짓는법

0

114

2

intelli J 실행오류

0

115

2

혹시 이건 수학적 사고가 부족한 걸까요?

0

152

2

영상이 재생이 안됩니다.

0

167

3

이중 반복문 (후반전) 오른쪽으로 치우친 별 쌓기에 질문이 있습니다.

0

117

2

응용이 어렵습니다.

0

207

2

IntelliJ가 보이지 않습니다.

0

187

3

JDK 버전 문의

0

130

2

BlackBox 파일 내에서 메소드 정의

0

136

1

동기화

0

123

2

Iterator 문의

0

105

1

코드 순서 문의

0

143

1

클래스 메소드

0

150

2

Quiz_05 관련 질문드립니다 !

0

118

2

다운로드가 안됩니다

0

165

2

다형성

0

120

2

HashMap

0

81

2