-
[C#] virtual, abstract, interface프로그래밍/C# 2020. 11. 5. 14:33
Virtual (가상)
-
abstract 와는 다르게 본문을 정의할 수 있습니다. (비워 놓아도 됨)
-
파생 클래스에서 재정의 할 수 있습니다.
-
자식 클래스에서는 new 또는 override 키워드 사용이 가능합니다.
-
override는 재정의 또는 확장의 의미
-
new는 기본 클래스를 숨긴다는 의미
-
-
base. 키워드를 통해 부모 클래스의 함수 호출이 가능합니다.
-
private, static 등 접근 한정자는 사용할 수 없습니다.
< 예제 코드 >
더보기public class Parent { public virtual void func1() { } } public class Child : Parent { public override void func1() { base.func1(); Console.WriteLine("재정의"); } }
Abstract (추상)
-
메서드에 사용하려면 해당 클래스도 abstract로 선언되어야 합니다.
-
해당 키워드로 선언된 메서드는 본문을 정의할 수 없습니다.
-
자식 클래스는 반드시 부모의 abstract 메서드를 재정의 해야 합니다.
-
private 키워드를 사용할 수 없습니다.
-
새로운 객체 생성이 안됩니다. ex) Example exam = new Example(); -> x
< 예제 코드 >
더보기abstract class Parent { public abstract void func1(); public abstract void func2(); } class Child : Parent { public override void func1() { throw new NotImplementedException(); } public override void func2() { throw new NotImplementedException(); } }
Interface
-
인터페이스는 객체를 생성할 수 없습니다.
-
멤버변수를 포함할 수 없습니다.
-
접근 제한자는 public 만을 지원합니다.
-
인터페이스의 메서드를 자식 클래스에서 구현할 경우 반드시 public을 사용해야 합니다.
-
다중 상속이 가능합니다.(클래스는 다중 상속이 불가능)
-
인터페이스의 모든 메서드를 자식클래스에서 재정의 해야합니다.
< 예제 코드 >
더보기interface Inter1 { void inter1(); } interface Inter2 { void inter2(); } interface Inter3 { void inter3(); } public class Child : Inter1, Inter2, Inter3 { public void inter1() { throw new NotImplementedException(); } public void inter2() { throw new NotImplementedException(); } public void inter3() { throw new NotImplementedException(); } }
'프로그래밍 > C#' 카테고리의 다른 글
[C#] error CS0052 : 일관성 없는 엑세스 가능성 (0) 2021.03.11 [C#] ContextMenuStrip Size 조절 (3) 2020.11.06 [C#] Delegate 를 이용해 폼 간 데이터 전송하기 (0) 2020.10.08 [C#] TextBox 에 찾기바꾸기 기능 활용 (0) 2020.09.29 [C#] Column editing function in TextBox (0) 2020.09.29 -