C#

C# 파생 클래스, 추상 클래스

doridam 2023. 7. 10. 14:46


1. 파생클래스

C#은 부모 클래스인 부모 클래스(Base Class)를 상속하여 자식 클래스(Derived Class)를 만들 수 있다. 상속을 사용하게 되면 Base 클래스의 데이터 및 메서드를 사용할 수 있게 된다.(public 또는 protected로 선언되어야 한다.)
자식 클래스는 여러개의 부모클래스를 상속받을 수 없고 하나의 부모 클래스만 상속 받을 수 있다.

2. 작성법

상속에 대한 규칙으로는 class 자식 : 부모 와 같이 작성한다. 

해당 간단한 예제는 Car 클래스를  상속 받은 Avante 클래스를 구현한 것이다. Avante클래스에서 _price 필드를 상속 받아 재사용한 케이스이다.

1. 추상 클래스

C# 에서 추상클래스는 클래스를 만드는 도면으로 생각할 수 있다.
public abstract class Exam
{
	public abstract int GetFirst();
}​​

abstract 키워드를 사용하여 선언하며 해당 클래스는 직접적으로 객체 생성이 되지 않는다. (new 키워드 사용 불가)
자식 클래스에 상속하여 사용하며 상속받은 자식 클래스는 추상 클래스의 모든 필드 및 메서드를 필수로 구현 해야한다. 또한 메소드의 경우 코드 블럭을 구현하는게 아닌 접근제어자, 반환형, 이름만 작성 후 ;으로 마무리 한다.

추상 클래스 Car를 상속 받은 Avante 클래스 내부에 Car 클래스에서 구현한 필드와 메소드가 구현되어 있지 않아 에러가 발생하였다.

추상 클래스의 필드와 메소드를 구현은 abstract 키워드가 override 키워드로 변경된다. 메서드의 경우 override를 추가하고 내부 코드를 작성하여 최종적으로 메서드를 재정의 하게 된다.

1. as 연산자 와 is 연산자

C# 의 as 연산자는 객체를 지정된 클래스 타입으로 변환하는데 사용한다. 변환에 성공하면 해당 클래스 타입으로 캐스팅하고 실패하면 null을 리턴한다.
is 연산자의 경우 앞에 있는 객체가 특정 클래스 타입이나 인터페이스를 가지고 있는지를 확인하고 참 거짓을 리턴한다.

Car 클래스를 상속받는 Avante 클래스를 확인하는 as, is 연산자를 구현한 예제이다.
정상적으로 구현된 경우 as와 캐스팅은 객체, is는 true를 출력하는 예제이다.