자바-자린이의 도전기

객체1-3) 생성자부/접근제한자

광형 2022. 4. 3. 16:20
728x90
728x90
SMALL

  생성자 :

    메소드 이름이 클래스 이름과 동일하고 리턴 자료형이 없는 메소드(반환형이 없다.)
 생성자가 왜 필요한가요? 객체를 생성할때 메모리 공간을 할당받아야 되는데 빈공간이 있을 수 없기 때문에
 기본값이라도 넣어주는 기본생성자가 만들어지고 또는 임의로 초기값을 설정하고 싶을때 매개변수 생성자를 이용해서 설정 가능합니다.

 객체 생성 구문중 new 부터
  ex) User u =  new User(); 

 [표현법]
   public 클래스명 (매개변수(생략가능)) {
   만약 매개변수 생성자라면
   필드 초기화 구문이 들어갑니다.
   ex) this.userId= userId; (매개변수가 userId일때)

생성자의 종류
 1. 매개변수가 있는 생성자
 2. 매개변수가 없는 생성자
 -> 두개의 차이 필드값을 초기에 설정하냐 마냐의 차이
생성자의 목적
 1. 객체를 생성하기 위해.
 2. 객체를 생성뿐만 아니라 매개변수를 이용해서 전달된 값으로 필드를 초기화할 목적
 주의사항
 1. 반드시 생성자의 이름은 클래스명과 동일해야함(대/소문자 구분)
 2. 반환형이 존재하지 않는다.
 3. 생성자가 여러개 존재 가증(오버로딩) 하지만 매개변수의 자료형, 개수, 순서가 달라야 한다.(같으면 안됨, 변수명 달라도 안됨)
 4. 매개변수 생성자를 명시적으로 작성하게 되면 JVM 이 기본 생성자를 만들어 주지 않는다. 
    -항상 기본 생성자는 만드는 습관을 들입시다.

 

  생성자는 new 연산자를 통해서 만든 구문에서 오른쪽 구문 즉, 학생 클래스를 만든다고 가정할때 new Student(); 부분이 생성자부이고, 그 값을 예를들어 new Student("김연아",20,"피켜스케이팅")이라고 한다면 라이브러리 생성자에서 그 매개변수 값을 받은 생성자를 만들어야 합니다.그리고 그 변수도 선언이 되어야 초기화 할 수 있습니다. 다음은 그 예시를 보여드리겠습니다.

public class Student {// 라이브러리 클래스 

 private String name;                            //<필드부>
 private int age;
 private String event;
 

public Student (String name, int age, String event) {// 생성자부 이름,나이,종목 초기화 매개변수를 받음)
          this.name = name;
          this.age=age;
          this.event=event;

      }
}

 

public class Run {// run 클래스 (실행 클래스)

public static void main(String[] args) {// 메인 함수

Student kim = new Student("김연아",20,"피켜스케이팅"); 
     }
}

이렇게 설정하면 초반에 일일히 한 변수에 대해서 한 메소드씩 사용하여 값을 지정하지 않아도 됩니다. 

생성자부는 기본 생성자부와 매개변수를 가지고 있는 매개변수를 가지고 있습니다. 

기본생성자: JVM이 아무 생성자도 없이 없으면 만들어 놓음

다음은 기본생성자입니다.

다음은 매개변수를 가지고 있는 생성자입니다. 

  생성자는 개수와 상관없이 매개변수의 숫자, 데이터 타입, 배열에 따라 여러개를 나열 할 수 있습니다. 이러한 성질은 오버로딩에 메소드부분과 관련이 있습니다. 이는 생성자는 메소드의 성질을 가지고 있기 때문에 가능합니다.

접근제한자

(+) public - 어디서든 (같은 패키지, 다른 패키지 모두) 접근 가능하게 하고 싶을때
 * # protected - 
같은 패키지, 해당 클래스, 다른 패키지라면 상속관계에서 접근가능 
 * ~ default - 
같은 패키지, 해당 클래스에서 접근 가능
 * ( -)private - 
오직 해당 클래스 안에서만 접근 가능

접근제한자는 다음과 같습니다.

다음시간에는 메소드와 오버로딩에 대해서 설명하겠습니다.

728x90
300x250
LIST