추상 함수와 C#의 가상 함수

Muhammad Maisam Abbas 2024년2월16일
  1. C#의 추상 함수
  2. C#의 가상 기능
추상 함수와 C#의 가상 함수

이 자습서에서는 C#의 추상 함수와 가상 함수를 비교합니다.

C#의 추상 함수

추상 함수는 C# 자체에 대한 정의가 없습니다. 이는 각 자식 클래스가 추상 함수를 재정의하고 추상 함수에 대한 자체 정의를 제공해야 함을 의미합니다. 추상 함수는 추상 클래스 내에서만 선언 할 수 있습니다. abstract키워드는 C#에서 추상 클래스와 함수를 만드는 데 사용됩니다. 다음 코드 예제는 C#에서abstract키워드를 사용하여 추상 함수를 만드는 방법을 보여줍니다.

using System;

namespace abstract_vs_virtual {
  public abstract class parentClass {
    public abstract void name();
  }
  class Program : parentClass {
    public override void name() {
      Console.WriteLine("This is Child Class");
    }
    static void Main(string[] args) {
      Program p = new Program();
      p.name();
    }
  }
}

출력:

This is Child Class

추상 클래스parentClass를 만들고parentClass클래스 내에 추상 함수name을 선언했습니다. parentClass에서Program클래스를 상속하고name함수를 재정의합니다. main함수에서Program클래스의 인스턴스를 초기화하고name함수를 호출합니다.

C#의 가상 기능

가상 함수에는 자체 정의가 있지만 하위 클래스가이를 재정의하고 동일한 함수에 대한 자체 정의를 가질 수도 있습니다. virtual키워드는 함수가 C#에서 가상 함수임을 지정하는 데 사용됩니다. 다음 코드 예제는 C#에서 가상 함수를 만드는 방법을 보여줍니다.

using System;

namespace abstract_vs_virtual {
  public class parentClass {
    public virtual void name() {
      Console.WriteLine("This is the Parent Class");
    }
  }
  class Program : parentClass {
    static void Main(string[] args) {
      Program p = new Program();
      p.name();
      parentClass pc = new parentClass();
      pc.name();
    }
  }
}

출력:

This is the Parent Class
This is the Parent Class

위 코드에서parentClass클래스를 생성하고parentClass클래스 내에 가상 함수name()을 정의했습니다. 그런 다음parentClass에서Program클래스를 상속했고Program클래스 내의name()함수를 재정의하지 않았습니다. 주 함수에서Program클래스와parentClass모두의 인스턴스를 생성하고 두 인스턴스 모두에서name()함수를 호출했습니다. p.name()함수 호출은Program클래스 내에name()함수에 대한 정의가 없기 때문에This is the Parent Class출력을 제공했습니다.

Muhammad Maisam Abbas avatar Muhammad Maisam Abbas avatar

Maisam is a highly skilled and motivated Data Scientist. He has over 4 years of experience with Python programming language. He loves solving complex problems and sharing his results on the internet.

LinkedIn

관련 문장 - Csharp Function