以下は完全に合法です。
public class LearningTeacher : ITeacher, IStudent
{
public string EducationLevel
{
get { return /*...*/; }
}
public string Department
{
get { return /*...*/; }
}
public string Name
{
get { return /*...*/; }
}
}
Name
プロパティは と のITeacher.Name
実装 ですIStudent.Name
。
プロパティの実装が同じでStudent
、インスタンスとインスタンスを内部に持つLearningTeacher
ことができる場合、効果的にデコレーターになります。このように、実装を繰り返す必要はありません。LearningTeacher
Student
Teacher
public class LearningTeacher : ITeacher, IStudent
{
Teacher _teacher;
Student _student;
public LearningTeacher(string name, string educationalLevel,
string department)
{
_student = new Student(name, educationalLevel);
_teacher = new Teacher(name, department);
}
public string EducationLevel
{
get { return _student.EducationLevel; }
}
public string Department
{
get { return _teacher.Department; }
}
public string Name
{
get { return _student.Name; }
}
}
.NET は多重継承をサポートしていないため、これが唯一の方法です。複数のインターフェイスのみを実装できます。