다형성

프로그래밍/C# 2020. 3. 22. 16:11

다형성 

   하나의 클래스나 메서드가 다양한 방식으로 동작하는 것

   override

   overrode

 

 

override

   부모 클래스의 메소드에는 virtual 예약어를 통해 가상 메서드 생성

   자식 클래스의 메소드에는 override를 통해 다형성 구현

   new 예약어는 override를 사용해 재정의한 것이 아니라 독립적인 메서드이므로 

       자식 클래스를 부모클래스로 암시적 형변환시 부모클래스의 메서드가 불러와진다.

   base 예약어는 부모클래스의 메서드를 호출함

   base 예약어는 부모클래스와 자식클래스 간 중복 된 코드가 있을 경우에 사용

using System;

namespace Example
{
    class Program
    {
        static void Main(string [] args)
        {
            Food food = new Food();
            food.Eat(); //먹는다
            Food bibim = new Bibim();
            bibim.Eat(); //비빈다
            Food coke = new Coke();
            coke.Eat(); //먹는다
            Food bbq = new Bbq();
            bbq.Eat();//굽는다 먹는다
        }
    }
    class Food
    {
        virtual public void Eat() { 
            Console.WriteLine("먹는다"); 
        }
    }
    class Bibim : Food
    {
        override public void Eat()
        {
            Console.WriteLine("비빈다");
        }
    }
    class Coke : Food
    {
        new public void Eat()
        {
            Console.WriteLine("마신다");
        }
    }
    class Bbq : Food
    {
        override public void Eat()
        {
            Console.WriteLine("굽는다");
            base.Eat();
        }
    }

}

 

Object 기본메서드 확장 - ToString 확장

   ovveride(재정의) 안했을 때

using System;

namespace Example
{
    class Program
    {
        static void Main(string [] args)
        {
            Food food = new Food();
            Console.WriteLine(food.ToString());
        }
    }
    class Food
    {
    }
}

   ovveride(재정의) 했을 때

using System;

namespace Example
{
    class Program
    {
        static void Main(string [] args)
        {
            Food food = new Food();
            Console.WriteLine(food.ToString());
        }
    }
    class Food
    {
        public override string ToString()
        {
            return  "먹는다.";
        }
    }
}

 

 

overrode

   메서드의 이름만 같음

   매개변수의 수, 개별 매개변수 타입, 반환값 등은 다를 수 있음

   ex) 다중생성자

'프로그래밍 > C#' 카테고리의 다른 글

추상클래스  (0) 2020.03.22
Object 의 메서드 - ToString, GetType, Equals, GetHashCode  (0) 2020.03.22
as, is 연산자  (0) 2020.03.20
객체지향 - 3  (0) 2020.03.20
객체지향 -2  (0) 2020.03.20

WRITTEN BY
beautifulhill

,