티스토리 뷰

💥 다향성

 - 함수의 이름이 같더라도 전달인자의 타입이나 개수에 따라 구분된다.

 - 객체지향에서는 대표적으로 오버로딩과 오버라이딩 기법이 있다.

💥 오버로딩(Overloading)

 - 사전적 의미는 '과적하다', '적재하다'라는 의미를 가지고 있다.

 - 겉모습은 똑같지만 내용이 다른 경우를 뜻한다.

 - 이름이 같은 함수일지라도 전달인자 타입이나 갯수가 다르면 다른 함수로 취급한다.

💥 오버로딩 실습 해보기

using System;

public class Fruit{
    public void Overload(int apple){
        Console.WriteLine("사과 {0}개", apple);
    }
    public void Overload(int apple, int lemon){
        Console.WriteLine("사과 {0}개 + 레몬 {1}개", apple, lemon);
    }
    public void Overload(int apple, int lemon, int grape){
        Console.WriteLine("사과 {0}개 + 레몬 {1}개 + 포도 {2}개", apple, lemon, grape);
    }
    public void Overload(char apple){
        Console.WriteLine("사과 {0}등급", apple);
    }
}

class HelloWorld {
  static void Main() {
    Fruit fruit = new Fruit();
    fruit.Overload(10);
  }
}

지금의 코드는 fruit.Overload(10); 에 전달인자가 정수형 1개만 있기 때문에 첫 번째 Overload를 호출할 것이다.

 

전달인자가 정수형1개일 때

 

전달인자가 정수형 2개일 때

 

전달인자가 정수형 3개일 때

 

전달인자가 문자형 1개일 때

이렇게 이름이 같은 Overload 함수라도 전달인자 타입이나 갯수가 다르면 다른 함수로 취급한다.

💥 오버라이딩(Overriding)

 - '위로 올라탄다', '엎어친다'는 의미를 갖는다.

 - 무언가에 올라타서 기존의 것을 덮어 버린다는 개념이다.

 - 상속의 개념이 기반이 되어야 한다.

💥 오버라이딩 실습 해보기

using System;

class Dog {
    protected int eyes, nose, mouse, ears;
    virtual public void bark(){Console.WriteLine("멍멍");}
    public Dog(){
        eyes = 0;
        nose = 0;
        mouse = 0;
        ears = 0;
    }
}

class Pudle : Dog{
    public Pudle(){
        base.eyes = 2;
        Console.WriteLine("푸들의 눈은 {0}개", eyes);
    }
    public override void bark(){
        Console.WriteLine("왕왕");
    }
    
}

class HelloWorld {
  static void Main() {
      Dog dog = new Dog();
      dog.bark();
      
      Pudle pd = new Pudle();
      pd.bark();
  }
}

class Pudle엔 없던 bark() 를 추가해보았다.

부모의 class와는 다르게 '멍멍' 이 아닌 '왕왕'으로 적었다.

그럼 결과값이 '멍멍' 으로 나올까 '왕왕'으로 나올까?

결과값은 부모 class의 bark()에 있는 '멍멍'이 아닌 '왕왕'이 나왔다.

이렇게 상속받은 메소드를 자식 클래스에서 재정의할 수가 있다.

이런 걸 오버라이딩이라고 한다.

'웹 개발 공부하기' 카테고리의 다른 글

[01.09] 람다 + 오늘의 포스팅💖  (0) 2025.01.12
[01.09] 인터페이스  (1) 2025.01.12
[01.09] 생성자와 상속성  (0) 2025.01.12
[01.09] 클래스(Class)  (0) 2025.01.12
[01.09] 객체 지향 프로그래밍 방식  (0) 2025.01.12
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함