Coding/Java

Constructor

코딩; 2021. 12. 14. 19:50

˙ constructor : 생성자
    객체 생성시에 호출.
    메소드
    클래스 명과 같다
    return 값이 없다
    overload가 가능하다
    생략이 가능하다
    별도의 호출이 불가능하다.(여러번 호출 불가)
    첫번째값(초기값)을 집어넣기 위해 쓴다**
     

˙destructor : 소멸자  <-  X 안씀(가비지 컬렉터)

public class MainClass {

	public static void main(String[] args) {
				
		int[] array = { 11, 22, 33 };
		
	//	MyClass[] cls = { 11, "홍길동" };		-> 클래스 내에서 불가능한 형태
		
	//	MyClass cls = new MyClass();
	//	MyClass cls= new MyClass( 1 );
		MyClass cls= new MyClass(2, "hello");	
		System.out.println(cls);	// 현재 저장된 heap영역의 주소가 출력!
		
	//	cls.MyClass(); -> 다시 별도의 호출이 불가
		
		MyClass t = cls.getThis(); 
		System.out.println(t);
		
		MyClass cls1 = new MyClass();
		System.out.println(cls1);
		MyClass t1 = cls1.getThis();
		System.out.println(t1);
		
	}
}

public class MyClass {

	// 멤버변수
	int number;
	String name;
	
	MyClass() {
		System.out.println("MyClass 기본생성자");	// Constructor
		
		this.number = 12;
		this.name = "홍길동";
	}	
	MyClass(int num) {
		System.out.println("MyClass(int num) 생성자");
	}
	
	MyClass(int number, String name) {	// 가인수(외부에서 들어오는)의 값을 멤버변수의 값으로 설정하고 싶을때 this 
		this.number = number;		// this. 는 현재 객체가 저장된 heap영역의 주소를 가르키는 포인터임	
		this.name = name;		// this가 안붙은 것은 매개변수이거나 로컬변수로 생각하면 됨
		System.out.println("MyClass(int num, String na) 생성자");
		
	// this : 자기참조 -> 현재 객체가 저장되어 있는 주소			
	}
	
	MyClass getThis() {
		return this;
	}
}