안녕하세요, 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 달아 주시면, 검증 결과를 통해, 수정하도록 하겠습니다.]
'C# > C# 일반 & Basic (General & Basic)' 카테고리의 다른 글
C# 프로그래머 되기 오버라이딩 사용 및 봉인, 메소드 숨기기 (0) | 2021.03.04 |
---|---|
C# 프로그래머 되기 접근 한정자 개념, 클래스 형식 변화 그리고 is 와 as 개념 (0) | 2021.03.04 |
C# 프로그래머 되기 - ArrayList 활용하기 (1) | 2021.03.04 |
C# 프로그래머 되기 - 클래스 Class 란 (0) | 2021.03.03 |
C# 프로그래머 되기 가변 매개변수 (1) | 2021.03.03 |
댓글