추상 함수와 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
출력을 제공했습니다.
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