프리 정보 컨텐츠

자바 생성자와 this의 개념 정리 본문

JAVA

자바 생성자와 this의 개념 정리

쏜스 2021. 1. 3. 14:42

생성자


인스턴스가 생성되는 시점에 파일을 지정할 수밖에 없는 조건을 만들어준다

클래스를 사용하는 사람이 대상이 되는 파일을 지정하는 것을 까먹지 않을 수 있으며,

인스턴스가 생성될 때 반드시 처리해야 될 작업을 초기 값 또는 실행 되어야하는 작업을 할 때 생성자를 사용한다.

 

생성자를 사용할 때는 클래스의 이름과 똑같은 메소드를 정의한다.

class Print {	
		public String delimiter = "";
		public Print(String delimiter) { 	 // 생성자 생성
			this.delimiter = delimiter; 
		}			
		public void A() { 
			System.out.println(this.delimiter);
			System.out.println("A");
			System.out.println("A");
		}	
 }

 

this 는 클래스가 인스턴스화 되었을 때의 인스턴스를 가르키는 특수한 이름이다.

public class MyOOP {

	public static void main(String[] args) {		
		Print p1 = new Print("----");		
		p1.A();
}

메인 클래스에서 프린트 메소드에 매개변수로써 delimiter("----") 를 받는다. 

Print 클래스의 delimiter 인스턴스 변수는 this 를 통해서 인스턴스를 가르킨다.

즉, this 는 생성한 인스턴스를 가르키는 역할을 구분해준다.

 

생성자를 사용하지 않을 경우에는 아래 코드를 예시로 들 수있다.

public class MyOOP {

	public static void main(String[] args) {		
		Print p1 = new Print();		 
       		p1.delimiter = "----";
		p1.A();
}

생성자를 사용하는 이유와 사용했을 때의 차이점을 정확히 구분해두자.


한 가지의 예를 더 들어보자면,

Public class Car {

	String name;
   	int number;
    
	public Car(String n) {		// 생성자 생성
    		name = name;
    }
 }

 n 으로 지정한 경우에 코드의 가독성이 어려우므로 알아보기 쉽게 name 을 사용한다.

Public class Car {

	String name;
  	int number;
    
	public Car(String name) {	// 생성자 생성
    		name = name;		// name = name 형식이 되므로 this.name 사용
    }
 }

name = name 형식이 되므로 출력할 때에 컴파일 오류가 생긴다.

앞에 name 은 앞에 정의된 필드 name 으로 정의하고 싶으므로

 

매개변수와 구분짓는 name 을 사용해야한다. 

이때, 정확한 name 을 구분짓기위해서 this.name 을 붙여준다.

 

this = 객체 자신을 참조하는 키워드

Comments