백견불여일타 C# 입문 - 객체지향 2)상속성

Soonyoung Kim·2021년 7월 7일
0

백견불여일타 C#

목록 보기
8/10

Point - #상속 #virtual #override

class 생성할_클래스 : 부모 클래스
  • 상속이란
    기존 틀이 되는 '부모 클래스'에서 나타나는 '자식 클래스'에게 자신의 기능을 모두 제공해준다는 의미
  • 생성할 클래스에 부모 클래스를 상속하겠다는 의미
  • 부모 클래스에서 가지고 있는 '형태'나 '행동'을 마치 복사하듯이 가져올 수 있다.
  • 마치 부모님이 나를 낳아 주신 것처럼 유전자가 복제된 형태.


1) Car009 클래스 : 자동차의 공통적인 행동을 하는 메소드
2) 가솔린 자동차 클래스와 전기자동차 클래스가 Car009 클래스를 상속받았지만, 기름을 넣는 방식은 다르다.


namespace RoadBook.CsharpBasic.Chapter05.Examples
{
    class Ex009
    {
        public void Run()
        {
            GasolineCar008 gasolineCar = new GasolineCar008();
            gasolineCar.Color = "검정";
            gasolineCar.Size = "SUV";
            ElectronicCar008 electronic = new ElectronicCar008();
            electronic.Color = "초록";
            electronic.Size = "경차";

            Console.WriteLine("{0}색 {1}가", gasolineCar.Color, gasolineCar.Size);
            gasolineCar.Go();

            Console.WriteLine("{0}색 {1}가", electronic.Color, electronic.Size);
            electronic.Left();
        }
    }

    class Car009
    {
        public string Color { get; set; }
        public string Size { get; set; }

        public void Engine_on()
        {
            Console.WriteLine("시동을 켭니다.");
        }

        public void Engine_off()
        {
            Console.WriteLine("시동을 끕니다.");
        }

        public void Go()
        {
            Console.WriteLine("전진합니다.");
        }

        public void Back()
        {
            Console.WriteLine("후진합니다.");
        }

        public void Left()
        {
            Console.WriteLine("좌회전합니다.");
        }

        public void Right()
        {
            Console.WriteLine("우회전합니다.");
        }

        /*
         * 부모 클래스에서 만든 가상의 클래스 (virtual 키워드 사용)
         * virtual 키워드 : 자식 클래스에서 메소드 재정의가 가능하도록 '가상(virtual)의 메소드' 껍데기를 만든 것
         * 만약 자식 클래스에서 메소드 재정의가 이루어지지 않는다면 부모의 기능을 물려 받게된다.
         */
        public virtual void InputGas() // 기름을 넣는 행위
        {
            Console.WriteLine("기름을 넣습니다.");
        }
    }

    // 부모 클래스로부터 상속받은 자식 클래스
    /* 
     * GasolineCar009와 ElectronicCar009 클래스가 Car009을 상속한 코드이다.
     * 부모 클래스는 자동차(Car008) 그 자체이다ㅏ.
     * 자식클래스는 휘발유 자동차와 전기 자동차이다.
     * 
     * class 생성할_클래스 : 부모 클래스
     */
    class GasolineCar009 : Car009 {

        /*
         * 클래스간 상속 관계에서 메소드를 재정의하는 것을 오버라이드(override)고 한다.
         * c#에서 virtual 메소드로 재정의 하는 메소드에 'override' 키워드로 명시하면 오버라이드 메소드로 만들어진다.
         */

        public override void InputGas()
        {
            Console.WriteLine("휘발유를 넣습니다."); //자식 클래스에서 메소드 오버라이드
        }
    }
    class ElectronicCar009 : Car009 {
        public override void InputGas()
        {
            Console.WriteLine("전기를 넣습니다."); //자식 클래스에서 메소드 오버라이드
        }
    }
}
profile
Sin prisa, sin pausa.

0개의 댓글