[Java] 자바 클래스(Class)와 인스턴스 사용법 & 예제

클래스 개요

Java는 객체지향언어입니다. 객체지향 언어에서 많이 사용하는 것 중 하나가 구현을 위한 클래스와 클래스에 붙여서 사용하는 상속 기능입니다. Class는 구현을 위해 사용하는 코드로 활용합니다. 객체를 정의하는 틀 또는 설계도와 같은 의미로 사용되기도 합니다. 추후 다룰 인터페이스는 Class의 기능을 설계하기 위해 사용하는 추상화된 코드로 활용합니다. 

클래스 구성요소

Class는 상태를 나타내는 필드(field)와 행동을 나타내는 메소드(method), 생성자(Constructor)로 구성됩니다. 여기서 필드는 Class에 포함된 변수(variable)를 의미합니다. 또한 메서드(method)는 특정 작업을 수행하기 위한 명령문입니다. 함수(function)라고도 하죠. 마지막으로 생성자가 있습니다. 생성자(Constructor)는 new 연산자로 호출되는 메서드로 객체 생성 시 필요한 작업을 모아둔 함수입니다. 여기서 보통 필드의 초기화 및 기본 값을 설정합니다. 이러한 것의 총 집합체를 우리는 클래스라고 합니다.  

클래스 예제 코드

아래 코드는 위에서 설명한 필드와 메서드, 생성자, 클래스를 구현한 코드입니다.

// Class 선언
class Car {
	
    // Field
    int wheel;
    int door;
    String name;
    String company;
    Date create_date;
    Date repair_date;
    
    // Constructor
    Car(int wheel, int door, String name, String company, Date create_date, Date repair_date) {
		this.wheel = wheel;
        this.door = door;
        this.name = name;
        this.company = company;
        this.create_date = create_date;
        this.repair_date = repair_date;
    }
    
    // Method
    void repairWheel(int wheel, String repairCommand) {
    
    	...
        
        this.repair_date = new Date();
        return;
    }
    
}

위 코드에서 나온 this라는 것은 주로 생성자와 메서드에서 인스턴스 멤버의 필드라는 것을 알려줄 때 사용합니다. 즉, 파라미터와 클래스의 속성과 구분하기 위해서 this를 사용합니다. this.name이라고 작성하면 멤버편수(필드)를 의미하는 것이 됩니다.

인스턴스 개요

Class는 하나의 객체(object)라고 표현합니다. 이러한 객체를 생성할 때 Java에서 인스턴스 생성을 지원합니다. 앞서 말한 생성자(Constructor)와 연관 있는데요. new 연산자를 사용합니다. 이렇게 Class로부터 객체를 선언하는 과정을 Class의 인스턴스화라고 합니다. 이렇게 생성된 Class를 인스턴스(instance)라고 합니다.

인스턴스는 메모리에 할당된 객체를 의미합니다. 이 말을 이해하기 위해서는 메모리를 이해해야 합니다. 메모리에 있는 Heep 영역에 Class를 인스턴스를 올려 다른 코드에서 사용할 수 있도록 합니다.

인스턴스 예제 코드

public class Main {

	public static void main(String[] args) {
    	Car car1 = new Car();
        Car car2 = new Car(4, 4, "승용차", "현대차", new Date(), new Date());
    }
}

인스턴스 생성을 위해서는 new 연산자를 사용합니다. new 연산자 뒤에 생성자가 나옵니다. 생성자는 Class() 형태를 가지고 있으며, 생성자의 여부에 따라 인자 값을 맞춰 넣으면 됩니다. 

public class Main {

	public static void main(String[] args) {
    
    	Car car = new Car();
        car.repairWheel(4, "수리를 위해서는 엔지니어가 필요합니다.");
    }
}

인스턴스를 생성 후 메소드를 호출하면 Class의 메서드를 사용할 수 있습니다.

함께보면 좋은 글

객체 지향 설계 5원칙 S.O.L.I.D을 알아보자

http://www.tcpschool.com/java/java_class_intro

https://coding-factory.tistory.com/864

Leave a Comment