Card c = new Card(); // Card() -> 생성자 호출
💡 인스턴스 = iv의 묶음
따라서 생성자는 인스턴스 변수 초기화 메서드라고도 할 수 있다.
💡 만약 생성자를 하나도 가지고 있지 않다면 컴파일러가 자동으로 기본 생성자를 생성해준다.
클래스명(매개변수){...}
매개변수가 없으면 기본 생성자, 있으면 매개변수가 있는 생성자로 구분한다.
: 매개변수와 메서드 내 함수가 없는 생성자
호출 방법
Card c = new Card();
기본생성자
Card(){} // 다른 생성자가 없으면 생략 가능. 왜? 컴파일러가 자동으로 만들어주니까.
호출 방법
Card c = new Card();
기본생성자
Card(){
.... //System.out.println();과 같은 함수가 온다.
}
호출 방법
Card c = new Card(4, "clover", "king");
매개변수가 있는 생성자
Card(int cardNum, String shape, String role) {
this.cardNum = cardNum;
this.shape = shape;
this.role = role;
}
💡 매개변수가 있는 생성자를 사용 하는 이유
변수의 값을 입력하는 코드들을 줄이기 위해 필요하다.
Card c = new Card();
Card(int cardNum, String shape, String role) {
this.cardNum = cardNum;
this.shape = shape;
this.role = role
}
: 같은 클래스 내에서 다른 생성자를 호출할 때 사용
코드의 중복을 제거하기 위해 사용 한다.
Car (String color) {
door = 5;
Car(color, "auto", 4); // 에러. 다른생성자를 호출할 때는 this()를 사용한다.
}
Car (String color) {
door = 5;
this(color, "auto", 4); // 에러. 생성자 this()는 첫 줄에 존재 해야 한다.
}
: 인스턴스 자신을 가리키는 참조변수
class Card {
int cardNum;
String shape;
String role;
public CardShake(int cardNum, String shape, Sting role) {
this.cardNum = cardNum; // this.cardNum=iv, cardNum=lv
this.shape = shape; // this.shape=iv, shape=lv
this.role = role; // this.role=iv, role=lv
💡 같은 클래스 내에 지역변수의 이름과 인스턴스 변수의 이름이 다를 경우엔 생략 가능!
: 객체 내부에 멤버의 형태로 존재, 외부 클래스의 모든 접근 지정자의 멤버에 접근 가능
: static + 인스턴스 내부 클래스
: 메서드 내에서 정의되는 클래스