: 생성자에서 다른 생성자 호출하기
생성자 간에서 서로 호출이 가능한 조건
1. 생성자의 이름으로 클래스이름 대신 this를 사용해야 함
2. 한 생성자에서 다른 생성자를 호출할 때는 반드시 첫 줄에서만 호출이 가능함
MyClass clsOne = new MyClass(); //객체생성
System.out.println(clsOne); //주소값을 보여줌
System.out.println(clsOne.getThis()); //clsOne과 같은 주소값을 보여줌
clsOne.method();//clsOne과 같은 주소값을 보여줌
*/
//MyClass clsTwo = new MyClass(); //객체생성
//System.out.println(clsTwo); //주소값을 보여줌 clsOne과는 다른 객체이므로 다른 주소값을 보여줌
//MyClass cls = new MyClass("tom");
MyClass cls = new MyClass();
}
}
//클래스
class MyClass{
//멤버변수
String name;
//생성자
public MyClass() {
this("john");
System.out.println("MyClass MyClass()");
}
public MyClass(String name) {
//this(); //기본생성자 호출 -> 즉 MyClass MyClass(String name)호출 시 MyClass MyClass()도 같이 호출
System.out.println("MyClass MyClass(String name)");
this.name = name;
}
MyClass getThis() { //0번째 매개변수로 모든 메소드에 추가되어 있음
return this;
}
void method() {
System.out.println(this);
//This생략이 가능..
this.name = "박예린"; //-> name = "박예린"; 이렇게 사용 가능
this.getThis(); //-> getThis(); 이렇게 사용 가능
}
void setName(String name) {
//name = name; 이렇게 적을때 어떤 name이 매개변수고 멤버변수인지 컴파일러는 구분하지 못함
this.name = name; //구분가능 -> this.name 은 멤버변수 , name은 매개변수
}
void setNameMethod() {
String name = "박예린"; //local(지역) 변수
this.name = name;
}
}