ASP.NET C#
상속, abstract, virtual, new, override
ToKor
2021. 1. 8. 03:13
- 상속: 기존 클래스의 기능 그대로 가져와 사용하거나 업데이트하여 사용하는 것
- abstract 함수: 선언만 있고, 정의되지 않으며, 상속받은 자식에서 반드시 구현
- virtual 함수: 선언과 구현이 함께 있고, 상속받은 자식에서 반드시 구현 할 필요없음
- new: 일반함수를 재정의, 부모타입에 자식 인스턴스 생성하면 부모에 선언된 인스턴스따라감
- override: 상위 클래스에서 재정의 허락한 경우(abstract, virtual)에사용하며, 부모타입에 자식 인스턴스 생성하면 자식에서 선언한 인스턴스 따라감(확실한 재정의됨)
using System;
namespace Example
{
public class Student
{
public void First()
{
Console.WriteLine("First");
}
public void Second()
{
Console.WriteLine("Second");
}
// virtual 함수
public virtual void Third()
{
Console.WriteLine("Third");
}
}
public class CopyStudent : Student
{
// 일반함수 재정의 - new
public new void Second()
{
Console.WriteLine("Another Second");
}
// virtual함수 재정의 - override
public override void Third()
{
Console.WriteLine("Another Third");
}
public void Fourth()
{
Console.WriteLine("Fourth");
}
}
public class Program
{
// execute
public static void Main(string[] args)
{
CopyStudent cs = new CopyStudent();
cs.First();
cs.Second();
cs.Third();
cs.Fourth();
/*
First
Another Second
Another Third
Fourth
*/
Student cs = new CopyStudent();
cs.First();
cs.Second();
cs.Third();
/*
First
Second
Another Third
*/
}
}
}