본문 바로가기
728x90
반응형

상속7

[C#]상속: Virtual, Abstract, Interface C#에서 상속시 자주 등장하는 키워드 virtual(가상), Abstract(추상), Interface(인터페이스)에 대해 정리하려고 한다. Virtual (가상) 키워드 - 자식 클래스에서 override 할 수 있으나 원하면 재정의 해야한다. - virtual class는 완벽한 기능을 제공할 수 있다. - 가상 클래스는 인스턴스화 할 수 있다. Abstract (추상) 키워드 - 불완전한 키워드로 자식 클래스에서 반드시 재정의 해야한다. - 사용 목적은 여러 자식 클래스에서 공유할 기본적인 클래스의 공통적인 정의를 제공하는 것이다. - 추상 클래스는 인스턴스화 할 수 없다. Interface (인터페이스) 키워드 - abstract와 비슷하나 멤버 필드를 사용할 수 없다. 그러나 함수와 프로퍼티는 .. 2023. 11. 20.
interface Study about interface and abstract interface 클래스가 따라야하는 약속이다. 파생될 클래스가 어떤 메소드를 구현해야 할지 정의 interface ILogger { void WirteLog(string log); } class ConsoleLogger : ILogger { // 상속받은 클래스는 구현해야함 public void WriteLog(string message) { Console.WirteLine("{0} {1}", DateTime.Now.ToLocalTime(), message); } } public static void Main() { // 상속받은 클래스 인스턴스화 가능 ILogger logger = new ConsoleLogger(); logger.Writ.. 2021. 8. 25.
inheritance Study about inheritance inheritance & 'base' keyword 기반 클래스와 파생 클래스 사이에 형식 변환이 가능하다. is / as 키워드가 형 변환 연산자로 as는 참조형식에만 사용한다. 파생 클래스의 수명주기는 다음과 같다 class Base { protected int Age; // 1 public Base() { Console.WriteLine("Base()"); } // 4 ~Base() { Console.WriteLine("~Base()"); } public void BaseMethod() {} public Base(int age) { this.Age = age; } } class Derived : Base { // 2 public Derived() { Con.. 2021. 8. 22.
relational Study about relational 관계 종류 수직 - 상속 수평 집합 수평적 관계 class를 instance화 한다 이때 바깥에서 pointing하는걸 인터페이스라고 하고 대부분 method로 구현 서로 다른 두 클래스가 긴밀하게 붙어야 할 경우가 생긴다 (연예인과 매니저관계) 즉 서로 독립적이지만 응집적임이 필요할 경우 어떤건 public 어떤건 private protected로 규정한 접근제어를 한번에 무력화 시키는 방법이 friend 키워드다 friend로 선언 가능한 대상 함수 클래스 관계의 필요성 (자료구조 링크드리스트를 통한 예제) class MyList {}; // friend MyList {}; class MyNode {}; class User : public MyNode {}; .. 2021. 8. 20.
inheritance 04 Study about inheritance (심화편 시작) pure virtual function 선언은 있으나 정의는 없음 (C에서는 link 에러가 났음) 이런 흐름이 있다라고 설계만 해놓고 아직 구현을 안했을때 사용 순수가상함수 예제 class MyInterface { virtual int GetData() const = 0; }; class MyData : public MyInterface { virtual int GetData() const { // 재정의 } } 순수가상함수들은 파생클래스에서 꼭 재정의를 해줘야한다 예를들면 MyCase는 휴대폰 케이스제작 MyInterface는 핸드폰 규격이 담겨있는 클래스라면 MyCase에선 핸드폰 크기만 알면될뿐 그 속의 RAM등은 알 필요 없기에 이런경우.. 2021. 8. 20.
inheritance 02 Study about inheritance (심화편 시작) virtual function "상속 + 재정의" 가 나오면 강한 특징을 발현 Data/GUI/Ctrol(제어) 는 항상 구분 Frame work: [기반코드] / [확장코드] 기반과 확장사이 상호작용 가능하게 하는게 재정의 기반코드에서 확장코드를 Call 하는 방법이 가상함수다 '미래'를 호출한다! 라는 개념도 탑재 method 종류 일반 가상 순수 가상: 가상함수와의 차이는 only 선언 (정의가 없음) 선언은 Complie만 가능 정의는 Link만 가능 형식 이야기 접근형식: Pointer* / Reference& 가 있음 실제형식(실형식): 아래 코드예제 통해서 설명 class A {}; // 기본 클래스 class B : public A.. 2021. 8. 20.
728x90
반응형