-
인스턴스(Instance)란?Design Pattern/객체지향 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) 모두에서, 클래스(또는 구조체) 정의를 바탕으로 실제 메모리에 할당되어 사용되는 인스턴스를 생성할 수 있으며, 이를 통해 프로그램의 다양한 동작을 구현할 수 있습니다.
반응형'Design Pattern > 객체지향' 카테고리의 다른 글
서브클래싱(Subclassing)과 서브타이핑(Subtyping)이란? (0) 2024.04.14 다형성(Polymorphism)이란? (1) 2024.04.12 상속(Inheritance)이란? (0) 2024.04.12 추상화(Abstraction)란? (0) 2024.04.12 캡슐화(encapsulation)란? (0) 2024.04.10