열심히 끝까지

23강 클래스에 대하여 - 생성자 본문

멘토씨리즈 JAVA

23강 클래스에 대하여 - 생성자

노유림 2022. 4. 29. 18:42

23-1 ) 생성자
<복습>
21강 클래스에 대하여 - 인스턴스 변수와 클래스 변수
<복습>
클래스란?      객체를 만들기 위한 설계도
객체란?         독립적으로 존재할 수 있는 것
인스턴스란?   클래스로 실제 메모리에 생성된 객체(객체가 더 포괄적인 의미)

클래스 생성 방법
       class 클래스명{
              변수 혹은 메서드
       }

객체(인스턴스) 생성 방법
       클래스명 참조변수 = new 클래스명(); ( 클래스명(); < 생성자)

객체 내 필드 접근 방법
       참조변수.필드명


*생성자? 
        : 객체 생성 시 호출되어 변수들을 초기화하는 메서드

         [특징]
              - 클래스와 이름이 같음
              - 리턴 타입, 반환값이 없음


        (1) 기본 생성자
             [구조]
       - 구현부                                 
              클래스명( ){      }           
                                                  
       - 호출부
              클래스명( );

      ---------------------------------
         ex ) [구조]
             - 구현부
               // Aclass라는 클래스 내에서 생성자를 만들고 싶다?
               // 같은 이름으로 쓰고 ()쓰고 괄호 안에 할 것 적기
                    Aclass(){
                          x=100;
                    }

             - 호출부
                    new Aclass();
                  // new는 생성자라는 것은 객체를 생성해라!
                  // 객체를 생성했을 때 그 값을 저장할 공간을 만들어야 함
                  // 그 능력를 가진 것이 new


         <실습> Constructor1, 2




        (2) 매개변수 생성자
             : 생성자가 매개변수를 받아 올 때, 
               그 생성자의 구조를 매개변수 생성자라고 함

            [구조]
          - 구현부
                 클래스명(자료형 변수명..){      }

          - 호출부
                 클래스명(값);

       ---------------------------------------------
           ex ) [구조]
                 - 구현부
                  Bclass(int a){
                          x=a;
                          System.out.println("Bclass() : 매개변수 생성자, x : " + a);
                  }

                 - 호출부
                       new Bclass(10);
           <실습> Constructor3

변수이름이 겹치지 않을 때,
변수명이 겹칠 경우 쓰이는 것, this
default 생성자를 만드는 순간 사라진 기본생성자 그렇기에 기본생성자를 생성해주어야 한다.


           ** this? 
              - 현재 객체를 지칭하기 위한 키워드
              - 매개변수의 변수명과 객체 내 변수의 이름이 같을 경우
                this를 사용해서 구분함
           

          ** class에 생성자를 만들지 않았을 때 컴파일러가 자동으로 기본 생성자를 만들어 준다.
             그렇기에 따로 만들지 않아도 기본 생성자는 존재
             하지만 default 생성자를 만드는 순간 기본 생성자는 사라짐

         <실습>PhoneConstructor