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}");
}
'C# 공부 > C# 기본 문법' 카테고리의 다른 글
컬렉션 (ArrayList, Queue, Stack, Hashtable) (0) | 2020.07.26 |
---|---|
배열 (선언 및 사용, 초기화, System.Array 클래스, 2차원/다차원 배열, 가변배열) (0) | 2020.07.26 |
프로퍼티 - 1 (구현과 사용법, 자동구현 프로퍼티, 프로퍼티와 생성자, 무명형식) (0) | 2020.07.26 |
추상 클래스 (클래스와 인터페이스의 사이) (1) | 2020.07.26 |
인터페이스 (선언과 사용법, 상속, 다중상속) (0) | 2020.07.26 |