독개

[C#] 추상 클래스 Abstract

by #독개#
추상클래스 라는 말이 좋지 않다 Abstract Class 라고 하자

정의

  • 하나 이상의 추상 메서드를 포함하는 클래스
  • Abstract Meothod : 선언부만 존재. 구현은 자식 클래스에서 할것
  • Abstract Class : 인스턴스화 될 수 없다

사용목적

  • 상속 받는 클래스들이 반드시 제공해야 하는 메서드를 정의 함으로써
  • 모든 자식들이 반드시 가지고 있는 일관된 메서드를 얻을 수 있다
ex) 모든차의 클래스(소나타,그랜저,모닝등등)는 Start() 이라는 매서드로 다 시동을 걸자!
소나타.Start()
그랜저.Start()
모닝.Start()

특징

  • Abstract Method는 반드시 Abstract Class안에 정의 되어야 한다 (오류뜸)
  • 일반 Method는 Abstract Class나 일반Class 모두 정의가능

 


#실습 - 구성

    abstract internal class Car
    {
        public string BrandName { get; set; }
        public void Advertise()
        {
            Console.WriteLine("I Love BMW");
        }

        abstract public void Start();
    }

    internal class Sonata : Car
    {
        public override void Start()
        {
            Console.WriteLine("소나타의 시동을 킵니다");
        }
    }

    internal class Morning : Car
    {
        public override void Start()
        {
            Console.WriteLine("모닝의 시동을 킵니다");
        }
    }

#실습 - 구현

public class Program
    {
        static public void Main(string[] args)
        {
            Sonata sonata = new Sonata();
            Morning morning = new Morning();
            Car car = sonata; //Abstract클래스가 인스턴스화 될순없지만 상속하는 부모이기 때문에 자식의 주소를 값으로 넣을 수 있다
            car.Advertise(); //출력: I Love BMW
            sonata.Start();  //출력: 소나타의 시동을 킵니다
            morning.Start(); //출력: 모닝의 시동을 킵니다
        }
    }

 

블로그의 정보

독한 개발자

#독개#

활동하기