- this

클래스 선언 시 내부적으로 선언되어 생성된다.

클래스 필드에서 한 번의 메소드 선언으로 여러 객체를 다루어야 한다.

만약 메소드 내에서 그 객체의 필드를 사용하고자 할 때 어떤 객체의 필드인지를 알 수 없다.

따라서 객체에 마침표를 찍거나, 객체를 생성하게 되면 그 접근 중인 객체를 this라는 변수가 받는다.

 

결과적으로 클래스 선언시 this. 필드명으로 접근하면 여러 객체도 하나의 메소드에서 구분하여 다룰 수 있게 된다.

 

this : 객체 구별용 / 현재 접근 중인 객체

 

this 보충 설명

 

이전에 momcar.brand로 각 각 값을 대입해주던 것과는 다르게 new Car("K7", "White", 7000)으로 해주면

Car클래스에서 찾지를 못한다.

따라서 Car(String brand ,...)으로 생성자를 만들어 주고 생성자 안에 this 사용해서

클래스 내부에 선언된 변수들을 불러와주면 만들어진 momcar필드로 값이 적절하게 넘어가게 된다.

(같은 색깔로 표시된 것끼리 같은 것을 의미한다.)

 

 


this 사용해서 객체 만들기!

 

this를 사용한 객체 만들기

 

- 클래스 배열

객체를 여러 개 선언해야 하는 경우 배열 타입으로 한 번에 선언 후 사용한다.

각 객체는 규칙성이 없기 때문에 규칙성을 부여하기 위해서 사용한다.

 

 

- 클래스 배열 선언

클래스명 [] 배열명 = {
      new 생성자(),
      new 생성자(), 
      .....
};

클래스명 []  배열명 = new 클래스명[칸수];

 

 

- 클래스 배열의 사용

각 배열의 방 자체를 객체로 봐야 한다.

배열명[index]. 변수

배열명[index]. 메서드()

 


클래스 배열을 사용해서 mycar, momcar, dadcar 시동 켜기 사용해보기!

 

 


- 정적 필드(static)

static이 붙은 변수, 메소드, 구역 등은 프로그램 실행 시 가장 먼저 메모리에 올라간다.

따라서 static이 붙은 메소드는 내부에서 객체의 필드에 올라오는 일반 전역 변수와 일반 메소드를 사용할 수 없다.

메모리에는 static이 먼저 올라가고, 나머지 전역 변수, 메소드는 아직 올라가지 않았기 때문에 사용이 불가능하다.

 

즉, static이 붙은 전역 변수, 메소드, 본인 내부에 선언된 변수만 사용 가능하다.

 

static이 붙은 전역변수, 메소드는 모든 객체가 공유한다.

따라서 static 필드는 클래스 이름으로 직접 접근이 가능하다.

실제로 모든 객체가 공유해야 하는 값, 메소드에는 static을 붙여서 사용하면 안 된다.

(공유하지 않아야 하는 값들에는 무조건 붙이면 안 된다!)

 

 
static 보충 설명

 

static으로 선언된 wheel은 모든 객체가 공유하기 때문에 mycar.wheel--을 했는데 momcar.wheel이 줄어드는 걸 볼 수 있다.

따라서 wheel은 static 변수가 아닌 일반 전역 변수로 선언되어야 한다.

 

 

복사했습니다!