2011-11-30 5 views
2

내 IVehicle 인터페이스에 Color라는 속성이 있습니다. 해당 인터페이스를 구현하는 모든 차량에 기본 색상 "빨간색"을 지정하려면 어떻게해야합니까? 다른 레벨이 필요합니까?인터페이스를 구현하는 모든 객체에서 속성의 기본값을 설정하는 방법은 무엇입니까?

public interface IVehicle 
{ 
    string Color { get; set; } 

    void Go();   
    void Stop(); 
} 

public class Bmw : IVehicle 
{ 

    #region IVehicle Members 

    public string Color 
    { 
     get 
     { 
      throw new NotImplementedException(); 
     } 
     set 
     { 
      throw new NotImplementedException(); 
     } 
    } 

    public void Go() 
    { 

    } 

    public void Stop() 
    { 

    } 

    #endregion 
} 
+0

나는 당신이 이러한 유형의 것들에 더 적합한 추상 클래스를 봐야한다고 생각한다. –

답변

8

나는 "레드"의 기본 색상을 가지고 그 인터페이스에서 상속 모든 차량을 원하는 경우에 어떻게이를 수 있을까?

이것은 실제로 구현 세부 사항이므로 인터페이스의 일부가 아닙니다. 인터페이스는 클래스가 구현하는 방법을 지시 할 수 없으며 구현되어야하는 멤버 만 지정할 수 있습니다.

이 유형의 컨트롤이 필요한 경우 인터페이스 대신 abstract class을 사용할 수 있습니다. Vehicle 기본 클래스는 Colors.Red을 사용하여 기본 구현을 설정할 수 있습니다.

0

추상 클래스 (이미 기본 클래스를 가지고있는 것들을 구현하는 것들)에 비해 인터페이스를 사용하는 특별한 이유가 없다면 추상 클래스가 필요합니다. 또한 속성을 가상으로 선언해야합니다. 그렇지 않으면 상속 클래스에서 재정의 할 수 없습니다.

3

"계승"인터페이스에서 ""을 구현했습니다. 기본 색상은 구현의 일부입니다. 그래서 네, "또 다른 레벨"이 필요합니다. 그것은 여러분의 자식 클래스가 상속하는 파괴적이고 구체적인 클래스 일 수 있습니다.

참고 : 많은 인터페이스를 구현할 수 있지만 한 클래스에서만 상속 할 수 있습니다.

+0

고마워. 나는 항상 그 말씨가 뒤섞인 다. 어떤 시점에서 그것은 붙어있을 것이다. – Frankie

관련 문제