C# - Inheritance

Alpha, Orderly·2023년 7월 7일
0

CSharp

목록 보기
6/11

상속

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 - 타입 확인

  • Variable is Type
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 를 반환함.

IEnumerator

public interface IEnumerator {
	object? Current { get; }
    bool MoveNext();
    void Reset();
}

클래스에 사용하기

  1. IEnumerable 인터페이스를 가져온다.
  2. GetEnuerator 를 구현한다.
    • 여기에서 사용되는 IEnumerator는 따로 클래스로 구현한다.

제네릭

  • 제네릭 IEnumerator 사용시, 특정 타입에 대한 IEnumerator 동작과 이외 동작을 모두 구현하게 된다.
profile
만능 컴덕후 겸 번지 팬

0개의 댓글