[Java] 노트정리 : costructor

Young eee·2022년 12월 28일

Java

목록 보기
16/22
post-thumbnail

📖 constructor

  • 생성자, 함수(메소드)
  • 메소드명은 클래스명과 동일하다
  • return value가 없다.
  • overload가 가능하다.
  • class를 생성할 때 자동 호출된다.(1번)
  • 별도의 호출이 불가능하다.(!=초기화)
  • 생략이 가능하다

※ destructor : 소멸자, 소멸시에 호출되는 함수이나 거의 사용되지 않음

💻 constructor Ex.

public class MainClass {
	public static void main(String[] args) {
		//BaseClass bc = new BaseClass();
		//BaseClass bc = new BaseClass(3);
		BaseClass bc = new BaseClass(3, "성춘향");
     }
}
class BaseClass{
	int number;
	String name;
	
	public BaseClass() {
		System.out.println("BaseClass BaseClass()");
	}
	public BaseClass(int num) {
		System.out.println("BaseClass BaseClass(int num)");
	}
	public BaseClass(int num, String na) {
		System.out.println("BaseClass BaseClass(int num, String na)");
		number = num;
		name = na;
	}
	
	public void method() {
		
	}
	public void method(int n) {
		
	}
}

💡this 키워드(pointer)

  • 그 객체의 주소(참조)
  • 매개변수, 지역변수, 멤버변수의 이름이 동일할 때 멤버변수를 지칭할 때 사용
  • constructor가 overload되어 여러개일경우 this를 사용해 호출할 수 있다.
    그러나 this를 남발하면 서로 호출하려고해서 에러남

💻this Ex.

public class MainClass {

	public static void main(String[] args) {
	
	//	MyClass clsOne = new MyClass();
	//	System.out.println(clsOne);
		
	//	System.out.println(clsOne.getThis());
		
	//	clsOne.method();
		
	//	MyClass clsTwo = new MyClass();
	//	System.out.println(clsTwo);
		

	//	MyClass cls = new MyClass("tom");
		MyClass cls = new MyClass();
		

	}

}

class MyClass {
	
	String name;
	
	public MyClass() {
		this("john");	//name을 매개변수로 갖는 생성자 호출
		System.out.println("MyClass MyClass()");
	}
	public MyClass(String name) {
		//this();	//기본 생성자 호출
		System.out.println("MyClass MyClass(String name)");
		this.name = name;
	}
	
	MyClass getThis() { // 0번째 매개변수로 모든 메소드에 추가되어 있다
		return this;
	}
	
	void method() {
		System.out.println(this);
		
		//this가 생략이 가능함.
		name = "일지매";
		this.getThis();
	}

	void setName(String name) {
		//this를 반드시 써야하는 경우 -> 변수의 이름이 같이 구분해줘야할 때 사용(매개변수, 지역변수, 멤버변수)
		this.name = name;
	}
	
	void setNameMethod() {
		String name = "홍길동"; //local(지역) 변수
		
		this.name = name;
	}
}

0개의 댓글