从多个类继承

时间:2015-07-30 15:05:55

标签: c#

如何从单个基类继承2个类?我以为......

class Attributes : Student, Teacher
{
 // insert code here 
}

..会起作用,但不起作用。有帮助吗?

5 个答案:

答案 0 :(得分:1)

C#中没有多重继承。您必须使用组合和(可选)接口继承。

答案 1 :(得分:0)

如果你需要"让2个类继承自单个基类" 而你的基类是Attributes,那么:

public class Student : Attributes 
{
    // insert code here 
}

public class Teacher : Attributes
{
    // insert code here 
}

C#不支持多重继承。

Here关于C#

继承的一些基础知识

答案 2 :(得分:0)

C#不支持从多个类继承。事实上,任何完全面向对象的语言(如java)也不支持多重继承。原因是,多重继承会导致钻石问题。 enter image description here

为避免此问题,完全OO为多接口继承提供支持。

public interface IStudent

public interface ITeacher
class Attributes :IStudent, ITeacher

其他人指出的另一种方法是使用构图。

class student{}
class Teacher{}

Class Attributes
{
     private Teacher teacher;
     private Student student;
}

答案 3 :(得分:0)

多重回复:

  1. c#java等喜欢不允许多重继承。
  2. 但您可以实现多个接口。
  3. 另一件事是你 不应该真的需要多重继承。
  4. 我建议你看一下你真正需要的东西。正如其他人所指出的那样,组合或多个接口的实现可能就是答案。

    另外,你的问题很混乱。代码示例显示了继承两个超类(AttributeTeacher)的类(Student)。但是描述询问你是否可以这样做:

    class Teacher : Attribute
    { }
    

    class Student : Attribute
    { } 
    

答案 4 :(得分:0)

考虑StudentTeacher之间的共同点,并将其置于界面中

public interface IAttributes
{
    public string Name { get; }
}

public class Student : IAttributes
{
}
public class Teacher : IAttributes
{
}

或者你可以封装

public class Attributes 
{ 
     public Student Student { get; }
     public Teacher Teacher { get; }
}

这是一个与第一个完全不同的模型。