일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- c# 추상 클래스
- HTML
- vim
- 플러터
- c#
- 다트 언어
- docker
- Data Structure
- C언어 포인터
- git
- c# 윈폼
- Algorithm
- 포인터
- 유니티
- c언어
- Unity
- Flutter
- gitlab
- jupyter
- dart 언어
- 깃
- 도커
- c# winform
- 구조체
- Houdini
- jupyter lab
- C# delegate
- github
- C++
- Python
Archives
- Today
- Total
nomad-programmer
[Programming/C#] 인터페이스의 프로퍼티 본문
인터페이스는 메소드뿐만 아니라 프로퍼티와 인덱서도 가질 수 있다. 프로퍼티나 인덱서를 가진 인터페이스를 상속하는 클래스가 반드시 해당 프로퍼티와 인덱서를 구현해야 하는 것은 물론이다.
당연한 이야기지만 인터페이스에 들어가는 프로퍼티는 구현을 갖지 않는다. 인터페이스의 프로퍼티 선언이 클라스의 자동 구현 프ㅗ퍼티 선언과 그 모습이 동일하다. 다음은 인터페이스의 프로퍼티 선언 형식이다.
interface 인터페이스이름
{
public 형식 프로퍼티1
{
get; set;
}
public 형식 프로퍼티2
{
get; set;
}
}
다음은 프로퍼티를 갖고 있는 인터페이스와 이를 상속하는 파생 클래스의 예이다.
interface INameInfo
{
string Name
{
get; set;
}
}
class NameInfo : INameInfo
{
private string name;
// 파생 클래스는 부모 인터페이스에 선언된 모든 프로퍼티를 구현해야 한다.
public string Name
{
get { return name; }
set { name = value; }
}
}
인터페이스의 프로퍼티 사용 예
using System;
namespace CSharpExample
{
interface INamedValue
{
/*
* 자동 구현 프로퍼티처럼 구현이 없지만, C# 컴파일러는 인터페이스의
* 프로퍼티에 대해서는 자동으로 구현해주지 않는다.
* 당연한 이야기다. 인터페이스는 어떤 구현도 가지지 않기 때문이다.
*/
string Name
{
get; set;
}
string Value
{
get; set;
}
}
class NamedValue: INamedValue
{
public string Name
{
get; set;
}
public string Value
{
get; set;
}
}
internal class MainApp
{
static int Main(string[] args)
{
NamedValue name = new NamedValue()
{
Name = "이름",
Value = "테스트"
};
NamedValue height = new NamedValue()
{
Name = "키",
Value = "180"
};
NamedValue weight = new NamedValue()
{
Name = "몸무게",
Value = "82"
};
Console.WriteLine($"{name.Name}: {name.Value}");
Console.WriteLine($"{height.Name}: {height.Value}");
Console.WriteLine($"{weight.Name}: {weight.Value}");
return 0;
}
}
}
/* 결과
이름: 테스트
키: 180
몸무게: 82
*/
'Programming > C#' 카테고리의 다른 글
[Programming/C#] System.Array (0) | 2020.09.14 |
---|---|
[Programming/C#] 추상 클래스와 프로퍼티 (0) | 2020.09.14 |
[Programming/C#] 무명 형식의 프로퍼티 (0) | 2020.09.14 |
[Programming/C#] 프로퍼티와 생성자 (0) | 2020.09.14 |
[Programming/C#] 자동 구현 프로퍼티 (0) | 2020.09.12 |
Comments