2011-09-30 3 views
0

Implements 또는 <Serializable()>이 클래스에서 클래스로 상속되지 않는다는 사실에 놀랐다는 것은 각 클래스를 다시 정의해야한다는 것을 의미합니다. 이러한 동작을 다시 만들고 싶습니다. 다른 무엇이 .NET에서 상속받을 수 없는지 궁금합니다. 감사합니다.Net에서 상속되지 않는 것은 무엇입니까?

+0

MHH, 나는이 이상한 행동을 알아 차리지 못했다고?이의 확신하는 –

+0

아니, 인터페이스 구현을 확실히 상속받을. 속성은 AttributeUsage를 사용하여 자동으로 만들 수도 있고 속성의 기본 클래스를 검색하여 수동으로 만들 수도 있습니다. 어쩌면 사립 멤버가 더 좋은 예입니다. 그들은 상속 받지만 사용할 수는 없습니다. '상속받지 못한다'고 말할 수도 있습니다. –

+0

자, IA가 IA 인터페이스를 구현하는 기본 클래스 A를 가졌습니다. IA는 메소드 Do 정의 메소드를 선언했습니다. B 클래스가 A를 상속하고 B 클래스가 IA.Do를 구현하려고 시도하면, 컴파일러는 "IA 클래스가이 인터페이스에 의해 구현되지 않았다"고 불평합니다. 이것은 클래스 B가 IA를 구현한다는 것을 의미합니까? IA.o를 B에 묶을 수 있습니까? 이것이 내가 원래의 질문의 기초를 얻은 곳입니다. –

답변

5

이들은 인터페이스와 속성 상속의 두 가지 항목입니다.

Inherits 부분은 인터페이스가 클래스 계층에서 어떻게 작동 하는지를 나타냅니다. 인터페이스는 실제로 상속됩니다. 주어진 기본 클래스가 IFactory을 구현하면 모든 파생 된 유형이됩니다. 파생 클래스가 인터페이스 또는 특정 메서드를 다시 구현할 수있는 방법에는 특정 언어가 있습니다. 그러나 .Net 수준에서 기본 클래스가 인터페이스를 구현하면 모든 파생 클래스도 마찬가지입니다.

속성이 상속되는지 여부는 주어진 속성에 대해 에있는 AttributeUsage.Inherited 값에 따라 달라집니다. Serializable의 경우 Inherits=false으로 표시되며 상속되지 않습니다. 모든 속성은 여기에서 자신의 행동을 선택해야합니다.

1

긴 대답은 오래 걸리지 만 짧은 대답은 sealed (C#) 또는 NotInheritable (VB.NET) 한정자를 사용하는 모든 클래스입니다.

http://msdn.microsoft.com/en-us/library/88c54tsw%28v=vs.71%29.aspx

+0

어느 대답이 옳은지 결정하는 데 어려움을 겪고 있습니까? –

+0

내 사과. 수락 버튼이 나를 위해 항상 작동하지는 않으며 실제로 meta.serverfault.com에 버그를 제출했습니다. 문제를 다시 치기 위해 노력하고 있습니다. 필자는 페이지를 50 번 새로 고쳤으며 답변 사이를 전환 할 수있는 시간의 3 분의 1 만 새로 고쳤습니다. 때로는 받아들이지 않을 때도 있지만 때로는 한 번 받아들이지만 더 이상 전환하지 않습니다. http://meta.serverfault.com/questions/2135/accept-button-does-not-work-all-the-time –

관련 문제