일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- C++
- C# delegate
- vim
- 유니티
- gitlab
- jupyter
- c언어
- 플러터
- 도커
- dart 언어
- git
- C언어 포인터
- 깃
- docker
- Houdini
- Python
- 구조체
- c# 윈폼
- c# 추상 클래스
- HTML
- 다트 언어
- 포인터
- Flutter
- Unity
- c# winform
- Algorithm
- jupyter lab
- github
- c#
- Data Structure
- Today
- Total
목록c# 오버라이딩 (2)
nomad-programmer
클래스를 상속이 안 되도록 봉인하는 것처럼 메소드도 오버라이딩되지 않도록 봉인할 수 있다. 그렇다고 모든 메소드를 봉인할 수 있는 것은 아니다. virtual로 선언된 가상 메소드를 오버라딩한 버전의 메소드만이 가능하다. using System; namespace CSharpExample { class Base { public virtual void SealMe() { } } class Derived : Base { public sealed override void SealMe() { base.SealMe(); } } class WantToOverride : Derived { public override void SealMe() { } } class MainApp { static int Main(stri..
객체 지향 프로그래밍에서 다형성(Polymorphism)은 객체가 여러 형태를 가질 수 있음을 의미한다. 다형성은 원래 하위 형식 다형성(Subtype Polymorphism)의 준말이다. 다시 말해, 자신으로부터 상속받아 만들어진 파생 클래스를 통해 다형성을 실현하는 것이다. 메소드를 오버라이딩하기 위해서는 한 가지 조건이 필요하다. 그 조건은 바로 오버라이딩을 할 메소드가 virtual 키워드로 한정되어 있어야 한다는 것이다. private로 선언한 메소드는 오버라이딩할 수 없다. private로 선언된 멤버는 어차피 파생 클래스에서 보이지도 않는다. 같은 이름, 같은 형식, 같은 매개 변수를 이용하여 선언했다 하더라도 컴파일러는 메소드를 재정의한다고 생각하지 않고 전혀 없었던 메소드를 선언했다고 간..