[JAVA] 클래스와 객체의 차이

da__ell·2022년 8월 21일
0

JAVA

목록 보기
2/7

객체지향 프로그래밍(Object-Oriented Programming) 줄여서 OOP로 쉽게 이해하면 조립하는 형식의 프로그래밍이라고 이해하면 된다.
여러가지 객체를 만들고 그 객체를 조립하여 하나의 완성된 프로그램을 만드는 것이다.

컴퓨터를 조립한다고 생각해보자,
메인보드, CPU, 그래픽카드 등 여러가지 부품을 조립해서 하나의 완성된 컴퓨터 본체를 만들게 된다.
이때 메인보드와 같은 부품들은 객체이며 이 객체들이 모여 하나의 프로그램이 완성이 된다.

이렇게 조립된 컴퓨터가 만약에 고장이 나면 본체째로 바로 버리는 사람은 없을 것이다.
고장이 난 부품이 있을 것이고, 그 부품만 교체하거나 수리하면 되기 때문이다.

객체지향 프로그램도 마찬가지이다. 프로그램에 오류가 있으면 오류가 난 부분만 수정하면 되고, 새로운 기능을 추가할 때도 새로운 객체를 추가하면 된다.

이렇게 객체지향은 유지보수에도 용이하고, 재사용하기도 좋으며, 확장성을 가지는 이점을 가진다.

Class (클래스)

앞서 말한대로 객체지향 프로그램은 여러 개체들이 모여 만들어 진다는 것을 알았다면 이런 생각으로 자연스럽게 이어진다.

그러면 객체는 어떻게 만들어 질까? 객체는 클래스를 통해 만들어진다.
쉽게 이해하면 클래스는 객체를 만들기 위한 설계도이다.

클래스는 다음과 같은 형태를 가진다.

class Car {
    // 필드 (이름 품종 나이 무게)
    String name;
    String color;
    int weight;

   // 생성자
    Car(String name, String color, int weight){
        this.name = name;
        this.color = color;
        this.weight = weight;
    }

    // 메소드
    void acclerate() {
        System.out.println(name + " 엑셀");
    }
    void brake() {
        System.out.println(name + " 멈춤");
    }
}

객체가 가지고 있는 데이터 저장되는 필드 그리고 동작을 담당하는 메소드 그리고 객체가 생성될 때 초기화 역할을 담당하는 생성자로 구성이 된다고 이해하면 된다.

객체(인스턴스)

객체는 앞서 말한대로 클래스라는 설계도를 기반으로 생성된 것이다.

public class Main
{
    public static void main(String[] args)
    {	
    	// Car 클래스의 객체(인스턴스) carOne 생성하고 클래스 안에 값을 지정한다
    	Car carOne = new Car("투싼", "흰색", 1500);
        
        // 객체를 통해 Car클래스의 메소드를 호출해서 사용할 수 있다.
        carOne.accelerate(); // '투싼 엑셀' 출력
        carOne.brake(); // '투싼 멈춤' 출력
    }
}

아까 선언한 Car 클래스를 바탕으로 carOne이라는 새로운 객체를 만들어서 활용할 수 있다.

그러면 객체를 만듦으로써 얻는 이점은 무엇인가?
쉽게 얘기하면 Car라는 클래스를 만들어 틀을 미리 만들어 놓으면 해당 틀을 활용해서 보다 쉽게 코드를 작성할 수 있다.

예를 들어 앞서 위에 main 메소드에서 인스턴스를 활용하지 않고 새로운 차를 만들어 낸다고 가정해보자,
틀이 없다고 생각하면 코드를 처음부터 다시 다 작성을 해야 되고 그러면 물리적인 시간도 들고 유지보수를 하는데 불편함이 발생할 것이다.
객체(인스턴스)를 생성함으로써 위와 같이 클래스 안의 메소드를 쉽게 원하는 형태로 활용할 수 있다.

https://docs.oracle.com/javase/tutorial/java/javaOO/objectcreation.html

profile
daelkdev@gmail.com

0개의 댓글