Computer >> 컴퓨터 >  >> 프로그래밍 >> C#

C# 클래스 인스턴스란? 객체의 개념과 사용 방법 총정리

C# 클래스 인스턴스의 기본 개념

클래스 인스턴스(class instance)는 곧 객체(Object)를 의미합니다. 다른 모든 객체 지향 프로그래밍 언어와 마찬가지로 C#에도 객체와 클래스라는 핵심 개념이 존재합니다. 객체는 현실 세계의 실체(real-world entity)를 표현하는 것으로, 클래스의 구체적인 실현(instance)이라고 할 수 있습니다. 그리고 우리는 이 객체를 통해 클래스의 멤버들에 접근하게 됩니다.

쉽게 비유하자면, 클래스는 '설계도'이고 인스턴스는 그 설계도를 바탕으로 실제로 만들어진 '제품'입니다. 하나의 클래스로부터 여러 개의 독립적인 인스턴스를 생성할 수 있으며, 각 인스턴스는 서로 다른 상태(데이터)를 가질 수 있습니다.

점(.) 연산자로 클래스 멤버 접근하기

클래스의 멤버에 접근하려면 객체 이름 뒤에 점(.) 연산자를 사용해야 합니다. 점 연산자는 객체의 이름과 멤버의 이름을 연결하는 역할을 하며, 필드 접근과 메서드 호출 모두에 활용됩니다.

먼저 new 키워드를 사용하여 객체를 생성하는 방법은 다음과 같습니다.

Box Box1 = new Box();

위 코드에서 Box1이 바로 우리가 생성한 객체입니다. 이 객체를 통해 클래스 내부의 멤버 변수에 접근할 수 있습니다.

Box1.height = 7.0;

뿐만 아니라 객체를 사용하면 멤버 함수(메서드)도 호출할 수 있습니다.

Box1.getVolume();

C# 객체와 클래스 동작 예제

다음 예제는 C#에서 객체와 클래스가 어떻게 함께 작동하는지 보여줍니다. 박스(Box) 클래스를 정의하고, 두 개의 객체를 만들어 각각의 부피를 계산하는 프로그램입니다.

예제 코드

using System;

namespace BoxApplication {
    class Box {
        private double length;   // 박스의 길이
        private double breadth;  // 박스의 너비
        private double height;   // 박스의 높이

        public void setLength(double len) {
            length = len;
        }
        public void setBreadth(double bre) {
            breadth = bre;
        }
        public void setHeight(double hei) {
            height = hei;
        }
        public double getVolume() {
            return length * breadth * height;
        }
    }

    class Boxtester {
        static void Main(string[] args) {
            // 두 개의 객체 생성
            Box Box1 = new Box(); // Box 타입의 Box1 선언
            Box Box2 = new Box();
            double volume;

            // 객체를 통해 멤버 함수 호출
            Box1.setLength(6.0);
            Box1.setBreadth(7.0);
            Box1.setHeight(5.0);

            // Box2 사양 설정
            Box2.setLength(12.0);
            Box2.setBreadth(13.0);
            Box2.setHeight(10.0);

            // Box1의 부피 계산 및 출력
            volume = Box1.getVolume();
            Console.WriteLine("Volume of Box1 : {0}", volume);

            // Box2의 부피 계산 및 출력
            volume = Box2.getVolume();
            Console.WriteLine("Volume of Box2 : {0}", volume);

            Console.ReadKey();
        }
    }
}

실행 결과

Volume of Box1 : 210
Volume of Box2 : 1560

예제 분석

위 예제의 핵심 포인트를 정리하면 다음과 같습니다.

1. 캡슐화(Encapsulation): length, breadth, height 필드는 private으로 선언되어 외부에서 직접 접근할 수 없으며, setLength() 같은 public 메서드를 통해서만 값을 설정할 수 있습니다.

2. 독립적인 인스턴스: Box1과 Box2는 같은 Box 클래스에서 생성되었지만, 각각 고유한 데이터를 가집니다. Box1은 6×7×5, Box2는 12×13×10 크기로 서로 다른 상태를 유지합니다.

3. 메서드 호출: getVolume() 메서드는 각 객체의 자신만의 필드 값을 사용해 부피를 계산하므로, Box1은 210, Box2는 1560이라는 서로 다른 결과를 반환합니다.

이처럼 C#에서 클래스는 객체를 만들기 위한 청사진 역할을 하며, new 키워드로 생성된 각 인스턴스는 독립적인 메모리 공간과 상태를 가지게 됩니다. 점(.) 연산자를 활용하면 객체의 필드와 메서드에 손쉽게 접근할 수 있습니다.