TIL

Day20(생성자)

jackpods 2023. 2. 21. 23:54

생성자

 

생성자- 객체가 생성될 때 초기화를 위해 실행되는 메소드이다.

1. 생성자는 객체가 생성되는 순간에 자동으로 호출되는 메소드로서, 객체에 필요한 초기화를 수행하는 코드이다.

           - 초기화란 데이터 객체 혹은 변수를 위해서 초기값을 지정해주는 것.      

 

2. 생성자 이름은 클래스 이름과 동일.

 

3. 생성자는 리턴 타입 없음

 

public class Triangle{
	int base;
    int high;
    String name;
    
    public Triangle(){ // 매개변수 없는 생성자
    	base =2 ; high=2; name="";   // base와 high의 초기값은 2
    }
    
    public Triangle(int x,int y, String n){ // 매개변수 있는 생성자
    
    	base = x; high =y ; name = n;
    }
    
    public int getArea(){
    
    	return base*high*(2/1) ;
    }
    
    public static void main(String[] args){
    
     Triangle triangle = new Triangle(10,5,작은 삼각형);
     int area = triangle.getArea();
     System.out.println(triangle.name+area);
    }
    
}


결과값은 25작은삼각형

 

 

생성자의 특징 

 

- 생성자의 이름은 반드시 클래스 이름과 동일하다

 - 생성자를 여러 개 작성할 수 있다.  => 매개 변수의 개수 와 타입만 다르다면, 클래스 내에 생성자를 여러 개 둘 수 있다.

 - 생성자는 객체를 생성할 때 한 번만 호출된다.=> ex) Triangle triangle = new Triangle(10,5,작은 삼각형);

 - 생성자에 리턴 타입을 지정 할 수 없다. 그렇다고 void를 리턴 타입으로 지정해서 안된다.

 - 생성자의 목적은 객체가 생성될 때, 필요한 초기 작업을 위함이다.

 

정리하자면 생성자는 객체가 생성될 때, 객체의 필드에 초깃값을 설정하거나, 파일을 열거나 등 객체가 활동하기 전에 필요한 초기화를 하기 위한 목적이다. 

 

기본 생성자/디폴트 생성자

  - 매개 변수가 없고 또한 실행 코드가 없어 아무 일도 하지 않고 단순 리턴하는 생성자 

class Triangle{
	public Triangle(){}
}

생성자가 없는 클래스는 있을 수 없다. 클래스에 생성자가 하나도 선언되어 있지 않을 경우, 컴파일러는 기본 생성자를 자동으로  생성한다. 

그러나 클래스에 생성자가 하나라도 존재하는 경우 기본 생성자를 임의로 삽입해주지 않는다.

 

 

this 레퍼런스

- this는 객체 자신에 대한 레퍼런스로서 메소드 안에서 사용된다. this는 컴파일러에 의해 자동으로 관리된다.

class Circle{
    int radius;
    public Circle(int radius){
        this.radius = radius;
	}
}

this.radius는 멤버 radius(int radius)이고 = radius는 매개 변수이다.

 

this()로 다른 생성자 호출

this()는 클래스 내에서 생성자가 다른 생성자를 호출할 때 사용하는 자바 코드이다.

this()의 호출은 생성자 코드의 첫 번째 문장이 되어야한다.