관리 메뉴

클라이언트/ 서버/ 엔지니어 "게임 개발자"를 향한 매일의 공부일지

객체를 만드는 생성자 1 - 생성자에 대하여 본문

프로그래밍 언어/자바

객체를 만드는 생성자 1 - 생성자에 대하여

huenuri 2024. 8. 16. 17:29

드디어 3주 차 학습이 시작되었다. 이 단원은 생성자에 대해서는 두 단원밖에 없고 나머지는 static에 관한 부분이다. 이건 책에서도 맨 뒤에 나오는 부분이라 여기까지만 학습하고 책으로 다시 넘어가려고 한다.

아침 수업 시간이 얼마 남지 않았지만 할 수 있는 데까지 공부를 진행해 볼 것이다.


 

 

 

 

이론 1 - 생성자

 

 

 

 

생성자도 메서드의 일부이다. 생성자 이름은 클래스 이름과 동일해야 한다.

 

 

 

 

 

이름은 생략 가능하다.

 

 

 

 

 

 

 

 

 

 

 

String형 변수는 별도의 초기값을 지정해야 한다.

 

 

 

 

 

 

this는 객체 자신을 의미한다.

 

 

 

 

 

 

소멸되는 지역 변수가 최우선이고 그 다음이 멤버변수이다. 즉 지역변수를 지역변수로 업데이트하게 된다.

 

 

 

 

 

인자를 별도로 tname이라고 설정하지 않아도 불러올 수 있다.

 

 

 

 

 

 

 

this는 편의상 사용하는 것이다.

 

 

 

동일한 이름을 사용할 수 있으므로 편리하다.


 

 

 

 

 

 


 

 

 

 

 

퀴즈 1 - 생성자란? 1

 

 

 

 

 

한번 틀렸는데 두번째는 맞추었다. 조금 알쏭달쏭한 답들도 있었는데 이 부분은 다시 한번 풀어보는 게 좋을 것 같다.


 

 

 

 

퀴즈 2 - 생성자란? 2

 

 

 

 

이 문제도 잘 풀었다. 


 

 

 

 

실습 1 - 생성자 구현하기

 


 

 

 

 

 

생성자를 만드는 건 조금 어려웠다. 접근지정자도 반환값도 명시하지 않고 그냥 Student 클래스만 하나 쓰는 게 맞는 건지 지금도 의문이 든다.


 

코드 해석

  1. Student 클래스
    • String name;: Student 클래스의 필드이다. 학생의 이름을 저장한다.
    • void study(): Student 클래스의 메서드이다. name 필드를 사용하여 "Studying"이라는 메시지를 출력한다.
    • Student(String name): 이 부분이 생성자이다. 생성자를 통해 Student 객체가 생성될 때 name 필드를 초기화한다.
  2. Main 클래스
    • public static void main(String args[]): 자바 프로그램의 진입점입니다. 여기서 프로그램이 시작된다.
    • Student student = new Student("Elice");: Student 클래스의 객체 student를 생성합니다. 생성자를 호출하여 name 필드를 "Elice"로 초기화한다.
    • student.study();: student 객체의 study() 메서드를 호출하여 "Elice Studying"이라는 메시지를 출력한다.

 

 

생성자의 특징

  1. 이름:
    • 생성자의 이름은 클래스의 이름과 동일해야 한다. 이 코드에서 Student(String name)의 이름이 Student인 이유는 이 메서드가 생성자이기 때문이다.
  2. 접근지정자와 반환값:
    • 생성자는 접근지정자를 가질 수 있지만, 반환 타입이 없다. 예를 들어, public, protected, private 같은 접근지정자를 사용할 수 있습니다. 하지만 반환 타입(void, int 등)은 선언하지 않습니다.
    • 이 코드에서는 Student(String name) 생성자가 public 접근지정자를 사용하지 않았지만, 기본 접근지정자(default, 패키지 프라이빗)가 적용된다. 이 경우, 동일한 패키지 내에서 접근이 가능하다.
  3. 매개변수:
    • 생성자는 매개변수를 가질 수 있다. 이 매개변수를 통해 객체를 초기화할 수 있다. 여기서 Student(String name) 생성자는 name이라는 매개변수를 받아 this.name = name;을 통해 클래스의 name 필드를 초기화한다.

 

생성자의 역할

생성자의 역할은 객체가 생성될 때 필드를 초기화하는 것이다. 이 코드에서 Student 객체가 생성될 때, 생성자가 호출되어 name 필드를 "Elice"로 설정한다. 그 후 student.study();가 호출될 때, "Elice Studying"이 출력된다.


 

 

 

학습을 마치고

아직 생성자에 대해 잘은 모르겠지만 그래도 조금은 알 것 같다. 오늘은 공부하기 싫은 날이었지만 그래도 오후까지 수업에 나가 잘 출석하였다. 이번주 월요일부터는 파이썬으로 하는 데이터 분석 수업은 듣지 않고 내가 하고 싶은 공부를 진행하니 훨씬 나은 것 같다.

그전까지만 해도 너무나도 수업에 듣기가 싫고 쓸모없는 걸 배우는 것 같아 무의미했었다. 난 해보니 인공지능보다는 게임 쪽이었다. 두 가지 모두 해보면서 내게 어떤 것이 더 맞는지 알게 되는 것 같다. 그래도 벡엔드 개발 쪽은 배우면 도움이 되고 꼭 필요한 것 같아 열심히 배우고 있다.

오후에는 JSP 수업이라 수업을 들을만 했다. 아직까지 큰 재미는 느끼지 못하고 있지만..