본문 바로가기

JAVA

JAVA 필드,생성자,this 개념과 사용방법 정리

 

 

필드란?

객체의 고유 데이터로 변수와 다르게 실행메소드가 종료되도 값이 지속 되는 상수를 말한다.

- 필드는 초기값없이 생성되도 초기값을 갖게된다. (객체 초기값 참조) 

- 필드는 생성자와 모든 메소드에서 사용가능하다.

- 필드는 클레스 외부로 부터 접근이 가능하다. 

- 필드 초기화는 두가지 방법이 있다, 필드 생성시 초기값을 주는것과 생성자에서 초기값을 주는것.

- 외부에 데이터로 초기화를 하고싶다면, 매개값을 받아 사용하는데 이때 this메소드가 필요하다.

 

 

 

 

 

생성자란?

new연산자와 같이 사용되어 '객체초기화'를 담당한다

 

 

'객체초기화'란?

필드 값을 초기화(수정) 하거나 메소드를 호출하여 사용준비 해두는 것을 의미한다.

 

 

 

 

 

 

 

생성자의 호출방식 

< 생성자 >
- 생성자는 new 연산자로 메모리에 객체를 할당받아 생성한다.
- 생성자 미생성후 호출시 기본 생성자가 생성된다. (기본 생성자가 하나라도 있으면 생성되지않음.)

   생성자없음 => Car c1 = new Car(); 

- 생성자를 명시적으로 선언하였을 경우 매개변수에 따라 호출된다.

// 좌 : 생성자 , 우 : Main 
Car(){} => Car c1 = new Car(); 
Car(int a){} => Car c1 = new Car(20); 
Car(int a, String b){} => Car c1 = new Car(20, "OK");

 

 

 

 

this란? 

기본적으로 매개변수와 필드의 명이 같을 경우 매개변수의 값만 참조하게 되는데  매개변수로 받은 값과 필드 값을 같은 값으로 참조시키기 위해 선언한다.
this.a(매개변수) = a(필드);

 

 

 

오버로딩이란?

다양한 객체들을 이용하여 객체를 초기화 하려면 생성자도 다양할 필요가 있기에
매개 변수를 달리하는 생성자를  여러 개 선언하여 다양한 객체들을 사용할 수 있게 한다.

- new 연산자로 호출할때 매개 값 타입과 수의 의해 해당 생성자가 호출된다.

int a; String b; double c; //필드    // 좌 : 생성자 , 우 : Main 
Car(int a){ this.a=a } => Car c1 = new Car(20); 
Car(int a, String b){ this.a =a; this.b =b; } => Car c1 = new Car(20, "OK");
Car(int a, String b, double c){ this.a =a; this.b =b; this.c =c;} => Car c1 = new Car(20, "OK", 1.0);

 

 

 

 

 

this() 사용이유와 방법

오버로딩이 많아질 경우 생성자 필드 선언 부분의 중복되는 코드가 다수 발생하는데 이를 효율적이게 해결하기 위해 this()메소드를 사용하여 중복된 코드를 한 생성자에만 작성한다, 이후 나머지 생성자들은 해당 생성자를 호출하여 초기화한다.

- this()는 반드시 생성자의 첫줄에서만 허용된다.

- 매개 변수 타입에 맞게 제공된다.

int a; String b; double c; //필드    // 좌 : 생성자 , 우 : Main 
Car(int a){ this(a, "Ok", 1.0) }=> Car c1 = new Car(20); 
Car(int a, String b){ this(a, b, 1.0) } => Car c1 = new Car(20, "OK");
Car(int a, String b, double c){ this(a, b, c ) } => Car c1 = new Car(20, "OK", 1.0);