Developer/C#, 닷넷

C# 객체(Object), 클래스(Class), 인스턴스(Instance) 차이 비교

우주로그 2022. 8. 12.

 

1. 개요

객체지향 프로그래밍을 처음 접하는 초보자들에게는 객체(Object), 클래스(Class), 인스턴스(Instance)를 명확히 정의하는 것이 중요합니다.

객체와 인스턴스는 혼용해서 쓰기도 하나, 헷갈리지 않기 위해 명확히 정의하는 것이 좋습니다.

하나씩 정의하면서 설명하도록 하겠습니다.

 

2. 객체(Object)

현실세계나 프로그래밍을 할 세계에서 존재하는 모든 사물형을 객체(Object)라고 합니다.

사람, 강아지, 비트코인... 이런 것들을 객체라고 정의할 수 있습니다.

우리가 프로그래밍을 통해 컨트롤 해야 하는 대상인 것이죠.

 

3. 클래스(Class)

보통 클래스는 객체를 만들 수 있는 설계도나, 붕어빵(객체)의 붕어빵틀(클래스)로 많이 표현합니다.

아직 프로그래밍 상에 실제로 존재하지 않는 정의일 뿐입니다.

사람을 만들 수 있는 클래스는 그림과 같이 표현을 할 수 있습니다.

사람을 만들 수 있는 클래스는 Age와 Name 이라는 속성(Property)를 가지고 있고, 

어떤 행동을 할 수 있는지 정의한 메서드(Method)를 가지고 있습니다.

물론 둘중의 하나만 가지고 있을 수도 있습니다.

이 것을 C# 코드로 표현해보겠습니다.

Age와 Name라는 속성을 가지고 있고, 

string 타입의 message 를 받으면, Console에 메시지를 출력하는 Listen 메서드와

이름을 반환하는 TalkName 메서드가 존재하도록 했습니다.

 public class Person
    {
        public int Age { get; set; }
        public string Name { get; set; }

        public void Listen(string message)
        {
            Console.WriteLine($"내 마음속에 저장 {message}");
        }

        public string TalkName()
        {
            return Name;
        }
    }

4. 인스턴스(Instance)

인스턴스는 Class를 가지고 실제 객체를 생성한 결과물입니다.

인스턴스를 생성하고 활용하는 코드입니다.

 public class Program
    {
        static void Main(string[] args)
        {
            Person jayden = new Person();
            jayden.Age = 9;
            jayden.Name = "Jayden";

            jayden.Listen("사랑해");

            Console.WriteLine($"당신의 이름은?? {jayden.TalkName()}");
        }
    }

소스를 하나씩 살펴볼게요.

Person jayden = new Person();

Person 클래스를 활용해 jayden이라는 명칭의 인스턴스를 하나 생성한 것 입니다.

jayden.Age = 9;
jayden.Name = "Jayden";

jayden의 Age와 Name의 속석 값을 지정하는 것 입니다.

 

이렇게 속성까지 처리한 jayden 인스턴스에게 이제 명령을 할 수가 있는 것이며, 이를 메서드 호출한다고 합니다.

 

jayden에게 "사랑해" 라는 말을 듣도록 Listen 메서드를 호출하면,

jayden.Listen("사랑해");

Person Class 정의에 따라 Listen 메서드가 호출되어 그 내부의 로직을 수행하게 됩니다.

 public void Listen(string message)
        {
            Console.WriteLine($"내 마음속에 저장 {message}");
        }

동일하게 TalkName 메서드도 호출할 수 있습니다.

Console.WriteLine($"당신의 이름은?? {jayden.TalkName()}");

결과

'Developer > C#, 닷넷' 카테고리의 다른 글

C# event 사용(delegate)  (0) 2022.08.16
C# delegate 개념과 사용 이유  (0) 2022.08.13
C# JSON 활용하기(직렬화, 역직렬화)  (1) 2022.08.11
C# 프로젝트 생성, Hello World 출력  (0) 2022.08.10
C# Visual Studio 설치  (0) 2022.08.10

댓글