본문 바로가기

C#/Knowledge

클래스의 상속 및 다형성 / 추상 클래스

[ 상속 ]

기존의 클래스(상위 클래스) 를 확장하거나 재사용하여 새로운 클래스(하위 클래스) 를 생성

자식 클래스는 부모 클래스의 멤버(필드, 메서드, 프로퍼티 등)를 상속받아 사용

C#에서 다중 상속은 불가능

 

[ 다형성 ]

다형성은 가상 메서드와 같은 의미로 볼 수 있다.

부모 클래스에서 정의되고 자식 클래스에서 재정의할 수 있는 메서드

가상 메서드는 virtual 키워드를 사용하여 선언되며, 자식 클래스에서 필요에 따라 override로 재정의될 수 있다.

 

[ 오버라이딩 ]

  • 부모 클래스에서 이미 정의된 메서드를 자식 클래스에서 재정의하는 것을 의미 ( 위 사진에서 사용 )
  • 이는 상속 관계에 있는 클래스 간에 발생하며, 메서드의 이름, 매개변수 및 반환타입이 동일해야만 함
  • 오버라이딩을 통해 자식 클래스는 부모 클래스의 메서드를 재정의하여 자신에게 맞는 동작을 구현

버츄어와 오버라이딩을 사용하지 않아도 구현이 잘 된 것처럼 보이는 상황이 있다.

하지만 문제의 지점은 마린과 저글링을 부모의 형태로 관리하는 상황이다. ex) 100마리 이상의 마린과 저글링

 

[ 오버로딩 ]

  • 동일한 메서드 이름을 가지고 있지만, 매개변수의 개수, 타입 또는 순서가 다른 여러 개의 메서드를 정의
  • 오버로딩을 통해 동일한 이름을 가진 메서드를 다양한 매개변수 조합으로 호출

 

[ 추상 클래스 ]

  • 직접적으로 인스턴스를 생성할 수 없는 클래스
  • 주로 상속을 위한 베이스 클래스로 사용
  • abstract 키워드를 사용하여 선언되며, 추상 메서드를 포함할 수 있음
  • 구현부가 없는 메서드로, 자식 클래스에서 반드시 구현되어야 함
  • 인터페이스와는 다르게 단일 상속만 가능

'C# > Knowledge' 카테고리의 다른 글

인터페이스 , 열거형 enums  (0) 2024.04.29
제너릭  (0) 2024.04.29
클래스 & 객체지향 프로그래밍  (0) 2024.04.28
구조체  (0) 2024.04.25
메서드  (0) 2024.04.25