TIL 25.02.13 - 상속

강진규·2025년 2월 13일

Today I Learned

목록 보기
12/34
post-thumbnail

굉장히 중요한 부분인것 같아서 한번 더 짚고 넘어갈려고 한다.

[ 상속 ]

  • 상속은 기존의 클래스(부모 클래스 또는 상위 클래스)를 확장하거나 재사용하여 새로운 클래스(자식 클래스 또는 하위 클래스)를 생성하는 것
  • 자식 클래스는 부모 클래스의 멤버(필드, 메서드, 프로퍼티 등)를 상속받아 사용할 수 있다.
  • 상속을 통해 부모 클래스의 기능을 확장하거나 수정하여 새로운 클래스를 정의할 수 있다.
 public class Number
 {
     public int Number1 { get; set; }
     public int Number2 { get; set; }

     public int multiply()
     {
         return Number1 * Number2; 
     }

 }

 public class Plus : Number
 {
     public int PlusNumber()
     {
         return Number1 + Number2;
     }
 }

 public class Minus : Number
 {
     public int MinusNumber()
     {
         return Number1 - Number2;
     }
 }

" : 부모클래스 " 형식으로 상속 시킬 수 있다.

static void Main(string[] args)
{
    Plus plus = new Plus();
    Minus minus = new Minus();

    plus.Number1 = 1;
    plus.Number2 = 2;

    minus.Number1 = 10;
    minus.Number2 = 8;

    int sum = plus.PlusNumber();
    int dif = minus.MinusNumber();
    int mul1 = plus.multiply();
    int mul2 = minus.multiply();

    Console.WriteLine($"{sum}   {dif}   {mul1}  {mul2}");
}

상속된 자식 클래스에서 부모 클래스의 필드, 메서드를 사용 가능하다는 걸 알 수 있다.


[ 장점 ]

  • 코드의 재사용성 : 기존 클래스의 코드를 재사용 가능
  • 계층 구조의 표현 : 클래스 간의 계층 구조를 표현하여 구조를 명확하게 표현
  • 유지 보수성의 향상 : 기존 클래스의 수정이 필요한 경우, 해당 클래스만 수정하면 됨

[ 종류 ]

  • 단일 상속 : 하나의 클래스만 상속
  • 다중 상속 : 여러 개의 클래스를 동시에 상속 (C# 지원 X)
  • 인터페이스 상속 : 인터페이스를 상속, 다중 상속 가능 (하나의 클래스, 여러개의 인터페이스)

[ 특징 ]

  • 부모 클래스의 멤버에 접근
    • 자식에서 부모의 멤버에 접근 가능하고, 이를 통해 부모의 기능을 재사용 할 수 있음
  • 메서드 재정의
    • 부모의 메서드를 재정의하여 수정할 수 있음 (다형성)
  • 상속의 깊이
    • 계층적인 상속 구조를 가질 수 있음, 부모가 또 다른 클래스의 자식이 될 수 있음
    • 깊이가 깊어질수록 관계가 복잡해지기 때문에 적절한 상속 깊이 유지가 필요함
  • 접근 제한자
    • 접근 제한자를 사용함에 따라 자식 클래스에서 접근 할 수 있는 범위가 결정됨
    • 상속된 멤버의 가시성을 조절하여 캡슐화 및 정보 은닉을 구현 할 수 있음

상속에 대한 이해가 아직 부족하다고 생각이 든다. 이 녀석을 잘 활용했다면 작성한 코드들이
더 줄어들었을 것 같다. 사실 이런게 있었는지 까먹고 있었다.
아무튼 이번에 팀 과제를 하면서 사용했더라면 어땠을까 하는 생각이 들었다.

0개의 댓글