Design Pattern/객체지향

인스턴스(Instance)란?

슝슝이입니다 2024. 4. 10. 20:49
반응형

 인스턴스(instance)는 객체 지향 프로그래밍(OOP)의 핵심 개념 중 하나로, 클래스로부터 생성된 객체를 의미합니다. 클래스는 객체의 설계도 같은 역할을 하며, 인스턴스는 이 설계도를 바탕으로 생성된 실체를 말합니다. 클래스 정의에 따라 메모리에 할당된 인스턴스는 실제 프로그램에서 사용되는 데이터와 메서드(함수)를 포함합니다. 인스턴스를 통해 클래스에 정의된 속성과 기능을 실제로 사용할 수 있습니다.

인스턴스의 특징

  • 유일성: 하나의 클래스로부터 여러 인스턴스를 생성할 수 있으며, 각 인스턴스는 독립된 메모리 영역을 가지고 서로 다른 상태를 유지할 수 있습니다.
  • 클래스와의 관계: 인스턴스는 특정 클래스의 구조를 따르며, 해당 클래스의 속성(attribute)과 메서드(method)를 가지게 됩니다.

 

자바에서의 인스턴스 생성 예시

자바는 객체 지향 프로그래밍 언어로, 클래스를 정의하고 이를 바탕으로 인스턴스를 생성하는 것이 일반적입니다.

// 자바에서의 클래스 정의
class Car {
    String color;
    int speed;

    // Car 클래스의 생성자
    Car(String color, int speed) {
        this.color = color;
        this.speed = speed;
    }

    // Car 클래스의 메서드
    void accelerate(int amount) {
        speed += amount;
    }
}

// 메인 함수에서 Car 인스턴스 생성
public class Main {
    public static void main(String[] args) {
        Car myCar = new Car("Red", 0); // Car 클래스의 인스턴스 생성
        myCar.accelerate(10); // myCar 인스턴스의 메서드 호출
        System.out.println(myCar.speed); // 출력: 10
    }
}

 

고(Go)에서의 인스턴스 생성 예시

 고(Go) 언어는 전통적인 객체 지향 프로그래밍 언어와는 다소 차이가 있지만, 구조체(struct)와 메서드를 통해 클래스와 비슷한 방식으로 데이터와 기능을 묶어 사용할 수 있습니다.

package main

import "fmt"

// Go에서의 구조체 정의
type Car struct {
    Color string
    Speed int
}

// Car 타입에 대한 메서드 정의
func (c *Car) Accelerate(amount int) {
    c.Speed += amount
}

func main() {
    myCar := Car{Color: "Red", Speed: 0} // Car 타입의 인스턴스 생성
    myCar.Accelerate(10)                 // myCar 인스턴스의 메서드 호출
    fmt.Println(myCar.Speed)             // 출력: 10
}

 자바와 고(Go) 모두에서, 클래스(또는 구조체) 정의를 바탕으로 실제 메모리에 할당되어 사용되는 인스턴스를 생성할 수 있으며, 이를 통해 프로그램의 다양한 동작을 구현할 수 있습니다.

반응형