JAVA_this(), this

박예린·2022년 12월 28일
0

Java

목록 보기
22/23

this(), this

: 생성자에서 다른 생성자 호출하기

: 그 객체의 주소(참조)를 의미

생성자 간에서 서로 호출이 가능한 조건
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;
	}
}
profile
개발자를 꿈꾸는 귀여운 나

0개의 댓글