본문 바로가기
Programming Language/C#

[C#] 추상 프로퍼티

by dbxxrud 2019. 10. 15.

 

추상 프로퍼티 - 추상 클래스는 클래스처럼 구현된 프로퍼티를 가질 수도 있는 한편, 인터페이스처럼 구현되지 않은 프로퍼티도 가질 수 있다. 추상 프로퍼티 역시 인터페이스의 프로퍼티와 다를 것 없다. 왜냐하면 파생 클래스가 해당 프로퍼티를 구현하도록 강제하는 것뿐이다.

 

 

선언

 

 

인터페이스처럼 구현을 비워놓은 것만으로는 추상 프로퍼티를 만들 수 없다. 왜냐하면 C# 컴파일러가 자동 구현 프로퍼티로 간주하고 구현을 자동으로 채워놓기 때문이다. 추상 프로퍼티는 abstract 한정자를 이용해서 선언한다. 

 

 

추상 프로퍼티를 갖는 추상 클래스 상속

 

 

추상 클래스는 구현을 가진 프로퍼티와 구현이 없는 추상 프로퍼티 모두를 가질 수 있다. 또한 파생 클래스는 부모 추상 클래스의 모든 추상 메서드뿐 아니라 추상 프로퍼티를 재정의 해야 한다.

 

 

예제

 

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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using static System.Console;
using System.IO;
 
namespace Practice2
{
    abstract  class Product
    {
        private static int serial = 0;
        public string SerialID
        {
            get { return String.Format("{0:d5}", serial++); }
        }
        abstract public DateTime ProductDate
        {
            get; set;
        }
    }
 
    class MyProduct : Product
    {
        public override DateTime ProductDate
        {
            get; set;
        }
    }
 
    class MainApp
    {
        static void Main(string[] args)
        {
            Product product_1 = new MyProduct()
            {
                ProductDate = new DateTime(20191016)
            };
            WriteLine("Product : {0}, Product Date : {1}", product_1.SerialID, product_1.ProductDate);
            Product product_2 = new MyProduct()
            {
                ProductDate = new DateTime(20191123)
            };
            WriteLine("Product : {0}, Product Date : {1}", product_2.SerialID, product_2.ProductDate);
        }
    }
}
 
http://colorscripter.com/info#e" target="_blank" style="color:#e5e5e5text-decoration:none">Colored by Color Scripter
http://colorscripter.com/info#e" target="_blank" style="text-decoration:none;color:white">cs

'Programming Language > C#' 카테고리의 다른 글

[C#] 인덱서  (0) 2019.11.03
[C#] 컬렉션 (Collection)  (0) 2019.10.31
[C#] System.Array  (0) 2019.10.02
[C#] 인터페이스의 프로퍼티  (0) 2019.10.02
[C#] 무명 형식  (0) 2019.10.02