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

C# 프로그래머 되기 기반 클래스, 파생 클래스, 그리고 this 개념

by ★√★ 2021. 3. 4.

안녕하세요, Davey 입니다. 오늘 Posting할 사항은, 앞에 Posting 한 클래스 개념중에 하나인, 기반 클래스와 파생 클래스에 대한 내용입니다. 그리고 추가적으로 this 구문에 대한 개념에 대해서, 설명 드리겠습니다.

 

 

 

기반-클래스-파생-클래스-썸네일

 

 

기반 클래스

: 파생 클래스에 모든 메소드와 변수를 물려주는 조상 클래스라고 생각하시면 됩니다.

 

 

파생 클래스

 

: 기반 클래스의 모든 메소드와 변수를 자유 자재로 사용할 수 있는 클래스이며, 클래스 명 옆에 기반 클래스의 이름을 선언을 해줘야 합니다. 기반 클래스가 조상 클래스라면, 파생 클래스는 약간, 후손 클래스라고 생각하시면 됩니다. 하지만 기반 클래스는 파생 클래스의 변수와 메소드를 사용 할 수 없습니다. 약간, 자식들이 부모 자동차 화장품은 자유 자재로 쓰지만, 부모들은 먼가.. 자식들꺼를 건들면, 자식들이 화낼거 같아서 안 쓰는 우리 사회의 행태의 한 면을 상상해 보시면 이해가 빠르실겁니다. ^^

 

 

-  쉬운 이해를 돕기 위해, 아래와 같이 간단하게 기반 클래스 & 파생 클래스 예시 Code를 작성하였습니다. 

 

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

 

using System;

using System.Collections.Generic;

using System.Text;

 

namespace ConsoleApp1

{

 

    class acestor1   // 기반 클래스 acestor1  선언

 

    {

 

        public int acestor1_int_v = 100;                  

       

        // acestor1 클래스 내 int 변수 acestor1_int_v 선언

       

        public string acestor2_string_v = "기반 클래스 변수 사용 확인 건";

        // acestor1 클래스 내 string 변수acestor2_string_v 선언

 

        public void acestor1_test1()    // acestor1 클래스 내 acestor1_test1 메소드 선언

 

        {

            Console.WriteLine("\n"+ "acestor1_test1 메소드를 이용하여 출력");

            Console.WriteLine(acestor1_int_v);

            Console.WriteLine(acestor2_string_v);

            // return " ";

        }

 

    }

    class Class1 : acestor1  // 파생 클래스 Class1  선언 그리고, 기반 클래스 acestor1 소속 시킴

    {

      

        static void Main(string[] args)

        {

 

 

            Class1 result1 = new Class1();                      // Class1 클래스를 이용하여, 인스턴스를 선언.

 

            Console.WriteLine(result1.acestor1_int_v);

 

            // Class1 클래스를 이용하여, 선언한 인스턴스를 이용하여, acestor1 클래스 내 acestor1_int_v 변수 호출

 

            Console.WriteLine(result1.acestor2_string_v);

 

            // Class1 클래스를 이용하여, 선언한 인스턴스를 이용하여, acestor1 클래스 내 acestor2_string_v 변수 호출

 

            result1.acestor1_test1();

 

        

        }

    }

}

 

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

 

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

: 아래 결과를 보시면, Class1 에서 선언하지 않은, 변수와 메소드를 기반 클래스에서 가져와 사용 및 출력이 가능한 걸 확인 하실 수 있습니다.

 

 

 

 

this 문구 개념

 

: class 내 선언한 변수를 호출하는 문구로서, class 내 메소드에서 class 내 선언한 변수를 호출할 때 사용하는 구문임.

 

-  쉬운 이해를 돕기 위해, 아래와 같이 간단하게 this 문구 개념 예시 Code를 작성하였습니다. 

 

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

 

using System;

using System.Collections.Generic;

using System.Text;

 

namespace ConsoleApp1

{

 

    class acestor1

 

    {

 

        public int acestor1_int_v = 100;                  

       

        // acestor1 클래스 내 int 변수 acestor1_int_v 선언

       

        public string acestor2_string_v = "기반 클래스 변수 사용 확인 건";

        // acestor1 클래스 내 string 변수acestor2_string_v 선언

 

        public void acestor1_test1(int a, string b)    // acestor1 클래스 내 acestor1_test1 메소드 선언

 

 

        {

            this.acestor1_int_v = a;          // this 구문을 사용하여, class acestor1에 선언한 acestor1_int_v 변수를 호출

            this.acestor2_string_v = b;      // this 구문을 사용하여, class acestor1에 선언한 acestor2_string_v 변수를 호출

 

            Console.WriteLine("\n"+ "acestor1_test1 메소드를 이용하여 출력");

            Console.WriteLine(acestor1_int_v);

            Console.WriteLine(acestor2_string_v);

            // return " ";

        }

 

    }

    class Class1 : acestor1

    {

      

        static void Main(string[] args)

        {

 

 

            Class1 result1 = new Class1();                      // Class1 클래스를 이용하여, 인스턴스를 선언.

 

            Console.WriteLine(result1.acestor1_int_v);

 

            // Class1 클래스를 이용하여, 선언한 인스턴스를 이용하여, acestor1 클래스 내 acestor1_int_v 변수 호출

 

            Console.WriteLine(result1.acestor2_string_v);

 

            // Class1 클래스를 이용하여, 선언한 인스턴스를 이용하여, acestor1 클래스 내 acestor2_string_v 변수 호출

 

            result1.acestor1_test1(10000, "this 구문 테스트입니다");

 

        

        }

    }

}

 

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

 

 

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

 

: 위 1번 항목의 기반 클래스 & 파생 클래스 코드 출력 했을 때와 결과 값이 다르게 나오는 걸 확인 하실 수 있습니다. 달라진 점은, This 구문을 사용한 것이고, 다른 하나는, 메소드의 내부 변수 a, b 선언 및 그 변수를 acestor1 내부적으로 선언한 acestor1_int_v & acestor2_string_v 에 값을 a, b 변수 값을 대입했기 때문입니다. a, b의 변수의 값은, Main Code에서 입력하는 값 에따라,달라지는 것도 확인하실 수 있습니다.

 

 

 

 

 

이상입니다. 기반 클래스와 파생 클래스에 대해서는, 앞으로 코딩 작성하실 때 정말 많이 사용하실 거라고 생각합니다. 하지만 그 내부적으로 선언하는 변수와 연결고리는, 위에서 설명드리는 내용과 더불어, 다른 책이나 인터넷 자료를 참조하시는 게 더 도움이 되실 듯합니다. 소위 프로그래머들 끼리 하는 애기가, 구글에 물어보면 거의 다 안다 라는 말이 있습니다. 그럼 제 Posing이 조금이나 도움이 됐으면 하네요! C# 프로그래머가 되기 위해서 같이 노력하시죠! 저도 노력하도록 하겠습니다.


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

728x90

댓글


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