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) 모두에서, 클래스(또는 구조체) 정의를 바탕으로 실제 메모리에 할당되어 사용되는 인스턴스를 생성할 수 있으며, 이를 통해 프로그램의 다양한 동작을 구현할 수 있습니다.
반응형