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

C# 프로그래머 되기 추상 클래스 및 Property 기본 구문

by ★√★ 2021. 3. 4.

안녕하세요, Davey 입니다. 오늘 포스팅 할 사항은, C# 에서, 인스턴스는 생성은 안되지만, interface와 비슷한 특성을 가진 추상 클래스와 다양하게 코드를 구현 할 수 있게 도와 주는 Property 기본 구문에 대해서, 설명해 드리겠습니다.

 

 

추상-클래스-Property-썸네일
추상-클래스-Property-썸네일

 

 

그럼 추상 클래스 및 Property 기본 구문에 대해서 하나 하나 설명 해 드릴 테니, 천천히 따라오시면 됩니다.

 

추상 클래스

 

: 미완성 클래스라고 말을 합니다. 클래스와 가장 큰 차이점은, 인스턴스를 생성하지 못한 다는 거죠. 하지만 내부 메소드 선언을 이용하여, 클래스 역할도 하고 있습니다. 추상 클래스와 그 내부에 포함하는 추상 메소드 기분 구문은 아래와 같습니다. (기본 선언 문구 "abstrat")

 

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

abstract class test1                    // 추상 클래스 선언시에 "abstrat"를 꼭 붙여 줘야 합니다.

{



public abstract void test_1();        // 추상 메소드 선언시에 "abstrat"를 꼭 붙여 줘야 합니다.



}



class test2 : test1

 {

 

     public override void test_1()

         {

          //  오버라이딩 할 메소드 내용

         }

 

 }

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

 

- 쉬운 이해를 돕기 위해, 아래와 같이 간단하게 추상클래스에 대한 예시 Code를 작성하였습니다.

 

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

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

 

namespace TEST_abstract

    {

        abstract class test1

        {

 

            public void statement1()

            {

 

                Console.WriteLine("Statement 첫 번째 예시입니다.");

            }

 

            public virtual void test_1()

            {

 

                Console.WriteLine("Statement 두 번째 예시입니다.");

            }

 

            public abstract void test_2();

 

 

        }

 

        class test2 : test1

        {

 

            public override void test_1()

            {

 

                Console.WriteLine("Override 한 결과 값입니다.");

 

 

            }

 

            public override void test_2()

            {

                Console.WriteLine("추상 클래스 확인 작업입니다.");

            }

 

        }

 

 

        class MainApp

        {

 

            static void Main(string[] args)

            {

 

                test1 demonstration1 = new test2();

                //  test1 demonstration2 = new test1(); <-- 인스턴스를 생성을 못합니다. 주석을 풀면 오류가 뜹니다.

 

 

                demonstration1.statement1();

                demonstration1.test_1();

                demonstration1.test_2();

 

                Console.ReadKey();

 

            }

        }

    }

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

 

- 위 Code를 실행하면 결과 값은 아래와 같습니다.

 

 

추상-클래스-Property-코드-구현-사진1
추상-클래스-Property-코드-구현-사진1

 

 

Property를 이용한 기본 문구 구성

 

: 속성값을 이용하여 값을 출력하는 구문으로서, get set 을 이용하여 기본적인 구문을 구성합니다. 즉, 각 변수의 값을 value값으로 받아서, 다시 그 값을 이용하여 get set 구문을 이용하여 출력하는 구문이라고 생각하시면 됩니다.

- 쉬운 이해를 돕기 위해, 아래와 같이 간단하게 Propery 기본 구문에 대한 예시 Code를 작성하였습니다. 

 

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

using System;

using System.Collections.Generic;

using System.Text;

 

namespace Property_Revised

{

    class test1

    {

 

        private string statement1;

      

 

        public string statement2

 

        {

 

            get { return statement1; }

            set { statement1 = value; }

 

        }

 

     

    }

 

    class MainApp

    {

 

        static void Main(string[] args)

        {

 

         

            test1 instan1 = new test1();

            instan1.statement2 = "사귄 날";

 

            Console.WriteLine($"Statement : {instan1.statement2}");

           

            Console.ReadKey();

 

        }

    }



}

 

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

위 코드를 실행 시켜 보면 아래와 같은 결과 같을 보실 수 있습니다. 이번 Posting에는 간단하게만 설명 드린 것이고, 다음에 Posting 할 내용에, Propety 관련해서, 자세히 설명 드리도록 하겠습니다.

 

추상-클래스-Property-코드-구현-사진2
추상-클래스-Property-코드-구현-사진2

 

이상입니다. 지금까지 추상 클래스 및 Property 기본 구문에 대해서 포스팅을 작성하였습니다. 추가적으로 설명 드리자면, 추상클래스는 약간 보조 클래스 개념으로, 사용하시면 되며, 그안에 선언한 추상 메소드는 내용을 쓰면 오류가 발생을 합니다. 이 부분을 파생클래스에서필요한 경우 다시 재 설정해줘야 합니다. 

그럼 제 Posting이 C# 프로그래머가 되는데 조금이나마 도움이 되셨으면 합니다. 감사합니다. 

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

728x90

댓글


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