Unity3d C# toolba 사용해보기

C# 추상클래스에서 추상프로퍼티를 알아보자 (abstract Class, Properity)


C# abstract Class, Properity (추상클래스에서 추상프로퍼티를 알아보자)


이번시간의 주제입니다.

지난시간.. 추상클래스와 프로퍼티에 대해서 대략적으로 알아봤는데요 이것안에 프로퍼티를 적용해서 어떻게 가동이 되는지 알아보겠습니다.

전시간의 내용을 복습해본다면.. 이것의경우 직접적인 객체를 생성하지 못한다고 하였죠..

또한..  인터페이스와는 달리 구현이 없는 외형적인 선언뿐만아니라 구현이들어있는 것들도 안에 만들 수 있다라고.. 하였습니다.

또한.. 인터페이스처럼.. abstract로 선언한 것들에 대해서는.. 상속받은 클래스에서 똑같이 구현해주어야합니다. 일단 이렇게 정리하고 한번 살펴보겠습니다.

추상프로퍼티:

추상이라는 글자가 붙어있기때문에.. 뭐.. 추상메소드와 똑같습니다. 인터페이스와 동일하죠.. 추상프로퍼티란..

추상클래스안에  구현부분을 생략한체로 만드는것을 말하며.. 그렇게되면 상속받는 클래스에서 재정의 해줘야합니다.

abstract class [abstract Name]
{
   ….
   abstract [data_type]  [properity_name]   ←  언듯 메소드와 비슷하지만..( )부분이 생략되었습니다.     이게 추상프로퍼티를 선언하는 방법입니다.
  {
         get;   //또한.. get / set 이렇게 표현하였는데 이건 지난시간에 프로퍼티의 기본형에 해당하겠죠
         set;  
  }
}

이렇게 선언한 클래스를 상속받은 클래스에서는 추상프로퍼티에 해당하는 부분을 재정의 해줘야합니다.

class MyTest : [abstract Name]  ← 추상클래스 이름을 적어주어 상속을 받는다
{
     …
     public ovrride [data_type]  [properity_name]     ← 추상프로퍼티를 상속받는다..
     {
         get;      ← 간단하게  get, set으로 입력값을 돌려주는것으로 표현하였다..    
        set;      
     }
}

네.. 이렇게 문법을 알아봤습니다.

그렇다면 실제 예제를 한번 돌려봐서 잘 작동하는지 확인해 보겠습니다.

C# abstract Class, Properity example

예제 자체가 그동안 배웠던 내용을 한번 다시 상기시켜주기 위해서 일부러 이렇게 만든것 같은 느낌이듭니다.

이것를 만들고 클래스안에 추상프로퍼티를 만들었죠..

   abstract class Product  //product 추상클래스
   {
       abstract public DateTime ProductDate
       {//구현이 없는 추상 properity
           get;set;
       }
   }

위에서 설명한 것 처럼 추상프로퍼티를 만들고.. 안에 구현이 없겠죠…

아래와같이 해당하는 추상클래스를 상속받으며.. 추상프로퍼티를 ovrride키워드를 이용하여 재정의해줬네요
   class MyProduct : Product   //Product를상속받았다
   {
       public override DateTime ProductDate   
       //이것안의 추상프로퍼티가 있으므로 재정의해줘야한다.
       {
           get;set;
       }
   }

그리고 메인클래스부분에서 이런식으로 요청을 하였습니다.

Product product_1 = new MyProduct()  { ProductDate = new DateTime(2014,12,16)  };
             //properity에 값할당시{ }안에 객체명샹략가능, 여러개일경우 ","로 구분주의해야함!

Console.WriteLine(
      "Product:{0}, Product Date:{1}", product_1.SerialID, product_1.ProductDate);

Product product_2 = new MyProduct() { ProductDate = new DateTime(2014, 12, 17) };

Console.WriteLine(
      "Product:{0}, Product Date:{1}", product_2.SerialID, product_2.ProductDate);

추상클래스이지만.. 구현을 갖을 수 있는 것이 혀용되기 때문에..
아래구문에서처럼.. serrial을 1씩 증가시켜 갖고있게되고..   입력받은 날짜와 같이 결과를 콘솔창에 출력하게됩니다.

       private static int serial = 0;
       public string SerialID   //구현을 갖는 properity
       {
           get { return String.Format("{0:d5}",serial++); }
       }

C# abstract_class Example

내용으로는 그리 어려워보이지 않네요..   이상으로

추상클래스안에서의 추상프로퍼티를 사용하는 방법에 대해서  알아봤습니다.









댓글