본문 바로가기
C#/C# 일반 & Basic (General & Basic)

C# 프로그래머 되기 - 클래스 Class 란

by ★√★ 2021. 3. 3.

안녕하세요, Davey 입니다. 오늘 포스팅 할 사항은, C# 에서 가장 중요한 개념 중에 하나인, Class (클래스)에 관한 내용입니다. 코드의 집합체라고 생각하시면 될 거 같습니다. 독립적인 최상위 단계라고도 설명 할 수 있습니다.

 

 

클래스-썸네일
클래스-썸네일

 

그럼 클래스에 대해서 제가 나름대로 이해한 부분을 최대하 자세히 하나 하나 설명해 드리겠습니다.

 

 

클래스(Class) 란?

 

: 클래스는 C#의 가장 기본적인 형식입니다. 클래스는 상태(필드)와 작업(메서드 및 기타 함수 멤버)을 하나의 단위로 결합하는

데이터 구조입니다. 클래스는 해당 클래스의 동적으로 생성된 인스턴스(개체라고도 함)에 대한 정의를 제공합니다. 클래스는 상속 및 다형성과 파생된 클래스가 기본 클래스를 확장하고 특수화할 수 있는 메커니즘을 지원합니다.

새 클래스는 클래스 선언을 사용하여 만들어집니다. 클래스 선언은 클래스의 특성 및 한정자, 클래스의 이름, 기본 클래스(제공된 경우), 클래스로 구현되는 인터페이스를 지정하는 헤더로 시작합니다. 헤더 다음에는 구분 기호 { 및 } 간에 작성되는 멤버 선언 목록으로 구성되는 클래스 본문이 나옵니다.

 

클래스의 인스턴스는 새 인스턴스에 대한 메모리를 할당하고, 인스턴스를 초기화하는 생성자를 호출하고, 인스턴스에 대한 참조를 반환하는 new 연산자를 사용하여 만들어집니다. 다음 문은 두 개의 Point 개체를 만들고 해당 개체에 대한 참조를 두 변수에 저장합니다. 개체가 차지하는 메모리는 개체에 더 이상 연결할 수 없을 때 자동으로 회수됩니다. C#에서는 개체를 명시적으로 할당 취소할 필요가 없으며 가능하지도 않습니다.

 

 

C#의 클래스 및 개체 - C# 언어 둘러보기

C#을 처음 사용하시나요? 클래스, 개체 및 상속에 대해 설명하는 개요를 읽어보세요.

docs.microsoft.com

 

위 내용에서 제 개인적인 의견을 덫붙이자면, class는 마치 하나의 집합체 이며, 이 집합체는 여러개 만들어서, 그 집합체 끼리도, 유연성 있게 서로 서로 호환할 수 있는 구성입니다. 하지만 모든 출력 code의 구성 및 실형은 Main 에서 이뤄지기 때문에 Main에서 구성해줘야 합니다.

 

 

- 위에 설명한 내용을 기반으로 간단하게 Class 코드를 구현해보도록 하겠습니다. 일단, 아래 Code는 Class 만 선언한 Case 입니다. 여기에서, Main 을 선언해 주고, Main에서 Class에서 선언한 메소드를 불러오면 됩니다.


============================================================

 

class Class2

 {

 

 

        int test1(int a)

        {

 

            int add1 = 10;

 

            Console.WriteLine(a);

            return a + add1;

        }

        string test2(string b)

        {

            string result = b;

            string add2 = "추가 항목";

 

            Console.WriteLine(result);

 

            return result + add2;

 

        }



}

 

============================================================

 

- 그럼 Main Code가지 구현한 Code를 작성해 보면 아래와 같습니다.

 

============================================================\

 

using System;

using System.Collections;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

 

 

namespace ConsoleApp1

{

    class Class2

    {

 

 

        int test1(int a)

        {

 

            int add1 = 10;

 

            Console.WriteLine(a);

            return a + add1;

        }

        string test2(string b)

        {

            string result = b;

            string add2 = "추가 항목";

 

            Console.WriteLine(result);

 

            return result + add2;

 

        }

  

 

        static void Main(string[] args)

        {

 

            Class2 result1 = new Class2();

 

            Console.WriteLine("Result 값은 아래와 같습니다.");

 

            result1.test1(10);

            result1.test2("test");

 

            Console.WriteLine("return value 까지 같이 출력하고 싶으면 아래와 같습니다.");

 

            Console.WriteLine($"{result1.test1(10)}");

            Console.WriteLine($"{result1.test2("test")}");

 

        }

 

    }

}

 

  

============================================================

 

 

- Run을 해보시면, 아래와 같은 결과를 보실 수 있습니다.

: 기존에 Class에서 선언한, test1, test2에 대한 메소드를 이용하여, Main에서 원하는 결과를 출력 가능합니다. test1, test2에 가지고 있는 변수에도 원하는 값을 넣으면, 더 유연하게 code를 구현 하실 수 있습니다. 그리고, 아래 보시면, 메소드에서 구성한 code 말고도,return값을 보고 싶을 때도 위에 구성한 code 중에 일부를 활용 할 수 있습니다.

 

 

클래스-관련-사진

 

 

 

이상입니다.위에서 애기했지만, 저는, class가 정말 코딩할 때 중요한 사항 중에 하나라고 생각합니다. 하지만 이 부분에 대해서, 여러가지로 나누어 지는데, 하나 하나 자세히 알고 가시면 정말 code 구현 할 때 도움이 많이 되실 거라고 생각합니다. 그럼 오늘도 수고 하셨습니다. 제 posting이 많이 도움이 되셨으면 합니다. 감사합니다. 함께 성장하시죠!


[저작권이나, 권리를 침해한 사항이 있으면 언제든지 Comment 부탁 드립니다. 검토 후 수정 및 삭제 조치 하도록 하겠습니다. 그리고, 기재되는 내용은 개인적으로 습득한 내용이므로, 혹 오류가 발생할 수 있을 가능성이 있으므로, 기재된 내용은 참조용으로만 봐주시길 바랍니다. 게시물에, 오류가 있을때도, Comment 달아 주시면, 검증 결과를 통해, 수정하도록 하겠습니다.]

728x90

댓글


// 내부링크를 현재창으로 열기 // Open internal links in same tab