C# 공부/C# 기본 문법

프로퍼티 - 2 (인터페이스의 프로퍼티, 추상 프로퍼티)

Gyutae Park 2020. 7. 26. 15:01

A. 인터페이스의 프로퍼티

인터페이스는 메소드 뿐만아니라 프로퍼티와 인덱서도 가질수 있다. 마찬가지로 파생클래스에서는 필수적으로 구현이 되어야한다.

인터페이스의 프로퍼티 선언은 클래스의 자동구현 프로퍼티 선언과 모습이 동일하다는 점만 주의해서 사용.

interface INamedValue
{
    string Name{get;set;}
    string Value{get;set;}
}

class NamedValue : INamedValue //인터페이스를 상속하므로 반드시 Name과 Value를 구현해야하며, 자동구현프로퍼티를 사용해도된다.
{
    public string Name{get;set;}
    public string Value{get;set;}
}

 

B. 추상클래스와 프로퍼티

추상클래스는 구현된 프로퍼티와 추상프로퍼티 모두를 가질수있다.

abstract class Product
{
    public 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;} 
    //파생클래스는 부모 추상클래스의 모든 추상메소드 및 추상프로퍼티를 재정의해야한다.
}

static void Main(String[] args)
{
    Product product_1 = new MyProduct()
    {ProductDate = new DateTime(2018,1,10)};
    
    Console.WriteLine($"{product_1.SerialID},{product_1.ProductDate}");
}