상속
class Radio: ElectoricalDevice {
...
}
- ElectronicalDevice 를 상속받는 Radio 클래스의 예시
부모 생성자 호출하기
public Radio(): base(부모생성자 패러미터) { ... }
virtual / override
// 부모 클래스
public virtual void Example();
// 위 함수는 자식 함수에서 아래와 같이 override 할수 있다.
public override void Example();
sealed
- public sealed override void Ex() 와 같이 사용
- 더이상 함수가 오버라이드 되지 않도록 한다.
- sealed class Ex 와 같이 사용시 더이상 이것을 상속받을수 없게 된다.
abstract
- abstract class Ex{} 와 같이 만든다.
- 직접 객체를 생성할수 없다.
- abstract class 는 abstract method 를 가질수 있는데, 이는 원형만을 가지며, 자식에서 상속시 반드시 구현한다.
부모 메소드 호출하기
base.Example();
- base 를 이용해 부모 메소드를 호출할수 있다.
as / is
as - 참조연산자 하향캐스팅
- 주로 부모 클래스에서 자식 클래스로 하향캐스팅할때 쓴다.
- 실패시 null 이 된다.
is - 타입 확인
int a;
a is int // true;
인터페이스
- 이름은 I로 시작한다.
- 프로퍼티와 메소드의 원형을 작성한다.
interface IDestroy {
string Ex { get; set; }
void Px();
}
- 클래스에서 사용시 상속과 유사하게 사용한다. ( 콜론 )
- 인터페이스를 가져와 구현할때는 override를 붙힐 필요가 없다.
IEnumerator / IEnumerable
IEnumerable 인터페이스
- 클래스에 foreach를 사용해 반복적으로 접근할수 있도록 한다.
public interface IEnumerable {
IEnumerator GetEnumerator();
}
IEnumerator
public interface IEnumerator {
object? Current { get; }
bool MoveNext();
void Reset();
}
클래스에 사용하기
- IEnumerable 인터페이스를 가져온다.
- GetEnuerator 를 구현한다.
- 여기에서 사용되는 IEnumerator는 따로 클래스로 구현한다.
제네릭
- 제네릭 IEnumerator 사용시, 특정 타입에 대한 IEnumerator 동작과 이외 동작을 모두 구현하게 된다.