코딩과 결혼합니다

[Java 문법 종합반] 3주차 : 객체 생성과 참조형 변수, 필드 본문

2세/Java

[Java 문법 종합반] 3주차 : 객체 생성과 참조형 변수, 필드

코딩러버 2023. 5. 27. 01:28
728x90

객체 생성

Car car1 = new Car();

객체 생성 연산자 'new'를 사용하면 클래스로부터 객체를 생성할 수 있다.

new 연산자 뒤에는 해당 클래스의 생성자 호출 코드를 작성한다.

형태가 기본 생성자의 형태와 같기 때문에 new 연산자에 의해 객체가 생성되면서 기본 생성자가 호출된다.

 

 

 

참조형 변수

Car car1 = new Car(); // Car클래스의 객체인 car1 인스턴스 생성
Car car2 = new Car(); // Car클래스의 객체인 car2 인스턴스 생성

new 연산자를 통해서 객체가 생성되면 해당 인스턴스의 주소가 반환되기 때문에 해당 클래스의 참조형 변수를 사용하여 받아줄 수 있다.

 

 

 

객체 배열

객체는 참조형 변수와 동일하게 취급되기 때문에 배열 또는 컬렉션에도 저장하여 관리할 수 있다.

Car[] carArray = new Car[3];
Car car1 = new Car();
car1.changeGear('P');
carArray[0] =car1;

Car car2 = new Car();
car2.changeGear('N');
carArray[1] = car2;

Car car3= new Car();
car3.changeGear('D');
carArray[2] = car3;

for (Car car:carArray) {
System.out.println("car.gear = " + car.gear);
}

 

 

 

 

객체의 속성 : 필드

필드란?

필드 : 객체의 데이터를 저장하는 역할

- 크게 고유한 데이터(변하지 않는 데이터), 상태 데이터(변하는 데이터), 객체 데이터(하위 객체)로 분류할 수 있다.

- 소프트웨어의 부품 = 객체

 

부품 데이터와 나머지 고유한 데이터, 상태 데이터를 포함한 자동차 클래스

public class Car {

     String company; // 자동차 회사
     String model; // 자동차 모델
     String color; // 자동차 색상
     double price; // 자동차 가격

     double speed; // 자동차 속도 , km/h
     char gear; // 기어의 상태, P,R,N,D
     boolean lights; // 자동차 조명의 상태

     Tire tire;
     Door door;
     Handle handle;

     public Car() {} // 기본 생성자

     double gasPedal(double kmh) {
             speed = kmh;
             return speed;
      }

     double brakePedal() {
            speed = 0;
            return speed;
      }

     char changeGear(char type) {
          gear = type;
          return gear;
      }

      boolean onOffLights() {
         lights = !lights;
         return lights;
     }

     void horn() {
         System.out.println("빵빵");
     }
}

 

 

 

필드의 초기값과 초기화

우리가 정의하여 선언한 클래스의 필드들은 기본적으로 초기값을 제공하지 않을 경우 객체가 생성될 때 자동으로 기본값으로 초기화 된다.

초기값 제공 방법 '필드타입 필드명 =값;'  ==  String model = "Gv80";

 

 

*필드 타입별 기본값

 

 

 

필드 사용방법

- 필드의 값을 변경/ 읽기

클래스에 필드를 정의하여 선언했다고 바로 사용할 수 있는 것은 아니다.

클래스는 설계도일 뿐 실제로 필드의 데이터를 가지고 있는 것은 객체이다.

따라서 객체를 생성한 후에 필드를 사용할 수 있다.

 

 

외부접근

객체를 생성했다면 참조변수를 이용하여 외부에서 객체 내부의 필드에 접근하여 사용할 수 있다.

이때 객체의 내부 필드에 접근하는 방법은 도트(.) 연산자를 사용한다.

car.color = "blue";

 

내부접근

객체 내부 메서드에서도 내부 필드에 접근할 수 있다.

double breakPedal(){
       speed = 0;
       return speed;
}

이처럼 brakePedal() 메서드 내부에서 객체의 필드 speed를 바로 호출해서 사용할 수 있습니다.