본문 바로가기

개발/Java

[Java] 클래스는 설계도다

객체와 클래스

소프트웨어에서 객체를 만들기 위해서는 설계도에 해당하는 클래스가 필요하다. 클래스를 토대로 생성된 객체를 해당 클래스의 ‘인스턴스’라고 부르며 이 과정을 ‘인스턴스화’라고 부른다.

 

클래스를 직접 만들어보고, 인스턴스화까지 해보자.

 

 

클래스 만들기

 

클래스 만드는 법
  1. 클래스 선언
  2. 속성(필드) 정의
  3. 생성자 정의
  4. 메서드 정의

 

 

처음에 필요한 필드와 메서드 구조를 다 짜두고

 

짠 구조에 맞게 클래스 내부에 주석 다 적어두고

package week03;

public class Car {
    //필드영역
    String company; //자동차 회사
    String model; // 자동차 모델
    String color; // 자동차 색
    double price; //자동차 가격
    double speed; //자동차 속도
    char gear; //자동차 기어 (P D R N)
    boolean lights; //자동차 불빛 상태

    //생성자영역 : 처음 객체가 생성될 때(instance화) 어떤 로직을 수행해야 하며, 어떤 값이 필수로 들어와야 하는지 정의
    public Car() {
        //logic
        //기본 생성자 : 생략 가능
    }

    //메서드영역
    // gasPedal
    // input : kmh
    // output : speed

    // brakePedal
    // input : x
    // output : speed

    // changeGear
    // input : gear(char type)
    // output : gear

    // onOffLight
    // input : x
    // output : lights(boolean)

    // horn
    // input : x
    // output : x
}

 

시작하는 방식이 좋겠다.

 

참고로, 클래스에 생성자가 아무것도 없다면 컴파일러가 자동으로 기본 생성자를 추가해주지만, 생성자가 하나라도 있다면 기본 생성자를 추가해주지 않는다.

 

 

 

이번엔 만든 클래스를 main 파일에서 인스턴스화해보자.

package week03;

public class Main {
    public static void main(String[] args) {
        Car car1 = new Car(); //new 명령어로 생성자를 생성하여 Car 클래스의 객체인 car1 인스턴스 생성
        Car car2 = new Car(); // 인스턴스 2

        //객체는 참조형 변수와 같기때문에 클래스 배열도 만들 수 있음.
        Car[] carArray = new Car[2];
        carArray[0] = car1;
        carArray[1] = car2;

        car1.changeGear('N');
        car2.changeGear('P');

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

 

추가적으로 클래스는 배열로도 사용가능하다. 객체는 참조형 변수와 동일하게 취급되기 때문에 배열 또는 컬렉션에도 저장하여 관리할 수 있다.

 

 

 

 

 

한번 더 리마인드 합시다.

클래스 = 설계도