혼공자

생성자 constructor

new 연산자로 클래스로부터 객체를 생성할 때 호출되어 객체의 초기화를 담당

 

객체 초기화

  • 필드를 초기화하거나 메소드를 호출해서 객체를 사용할 준비를 하는 것
  • new 연산자에 의해 생성자가 실행되면 힙 영역에 객체가 생성되고 객체의 번지 리턴
  • 리턴된 객체의 번지는 클래스 변수에 저장

 

기본 생성자 default constructor

[public] 클래스() {}
  • 클래스가 public class로 선언되면 기본 생성자에도 public이 붙지만 클래스가 public 없이 선언되면 기본 생성자에도 public 없음

 

생성자 선언

클래스( 매개변수선언, ....){  객체 초기화 코드}

 

  • 리턴 타입이 없고 클래스 이름과 동일
  • 블록 내부에 객체 초기화 코드가 작성됨
  • 필드에 초기값을 저장하거나 메소드를 호출하여 객체 사용전에 필요한 준비를 함
  • 매개 변수는 new 연산자로 생성자를 호출할 때 외부의 값을 생성자 블록 내부로 전달하는 역할을 함

 

 

필드 초기화

  • 클래스로부터 객체가 생성될 때 필드는 기본 초기값으로 자동 설정됨
  • 초기화하는 방법
  • 필드를 선언할 때 초기값을 주는 방법
  • 생성자에게 초기값을 주는 방법

 

생성자 오버로딩

  • 매개변수를 달리하는 생성자를 여러개 선언하는 것

 

다른 생성자 호출: this()

  • 생성자에서 다른 생성차를 호출할 때 this()코드를 사용
  • 생성자의 첫 줄에서만 허용
  • this()의 매개값은 호출되는 생성자의 매개 변수에 맞게 제공해야 함
  • this() 다음에는 추가적인 실행문들이 올 수 있음
  • 호출되는 생성자의 실행이 끝나면 원래 생성자로 돌아와서 다음 실행문을 진행

 

확인 문제

  • 객체를 생성하려면 생성자 호출이 반드시 필요한 것은 아니다. (x)
  • 생성자는 다른 생성자를 호출하기 위해 this()를 사용할 수 있다. (o)
  • 생성자가 선언되지 않으면 컴파일러가 기본 생성자를 추가한다. (o)
  • 매개 변수의 수, 타입, 순서가 다른 생성자를 여러 개 선언할 수 있다. (o)

 

 

Member 클래스 작성

public class Member {
    
    String name;
    String id;
    
    public Member(String name, String id){
        this.name = name;
        this.id = id;
    }
}

 

Board 클래스 작성

public class Board {
    
    String title;
    String content;
    String writer;
    String date;
    int hitcount;
    
    Board(String title, String content, String writer, String date, int hitcount){
        this.title = title;
        this.content = content;
        this.writer = writer;
        this.date =date;
        this.hitcount = hitcount;
    }
    
    Board(String title, String content){
        this(title, content, "로그인한 회원아이디", "현재 컴퓨터 날짜", 0);
    }
    
    Board(String title, String content, String writer){
        this(title, content,writer,"현재 컴퓨터 날짜", 0);
    }
    
    Board(String title, String content, String writer, String date){
        this(title, content,writer,date,0);
    }
    
}

 

+ Recent posts