可以抽象类继承另一个抽象类c#

时间:2014-02-01 11:49:37

标签: c# asp.net-mvc-4 inheritance entity-framework-5

我是C#& amp;的初学者EF。在设计我的新样本应用程序时,我有一个愚蠢的疑问。摘要可以继承另一个抽象类

using System;
using System.ComponentModel.DataAnnotations;

namespace Spark.BusinessObjects.Common
{
   public abstract class BOBase
   {
    public virtual int UpdatedBy { get; set; }

    [DataType(DataType.DateTime)]
    public virtual DateTime UpdatedOn { get; set; }
 }

  public abstract class MasterBOBase : BOBase
 {
    public virtual int CreatedBy { get; set; }

    [DataType(DataType.DateTime)]
    public virtual DateTime CreatedOn { get; set; }
 }
}

namespace Spark.BusinessObjects.UserManagement
{
 using System;
using System.Data.Linq.Mapping;
using System.ComponentModel.DataAnnotations;

using Spark.BusinessObjects.Common;

[Table(Name = "tblUser")]
public class User:BOBase
{
    [Key]        
    public virtual int UserID { get; set; }

    [StringLength(maximumLength:40,MinimumLength=10)]
    [DataType(DataType.EmailAddress)]
    public virtual string EMailID { get; set; }

    [StringLength(maximumLength: 20, MinimumLength = 6)]
    [DataType(DataType.Password)]
    public virtual string Password { get; set; }

    [StringLength(maximumLength: 20, MinimumLength = 3)]
    public virtual string FirstName { get; set; }

    [StringLength(maximumLength: 20, MinimumLength = 1)]
    public virtual string LastName { get; set; }

    [DataType(DataType.Date)]
    public virtual DateTime DOB { get; set; }

}

public class UserRole:MasterBOBase
{
    [Key]
    public virtual int UserID { get; set; }
    public virtual  int UserRoleName { get; set; }
}
}

我不需要CreatedBy&我的主表格中的CreatedOn属性。我可以像上面一样使用。是 它是否正确?

4 个答案:

答案 0 :(得分:11)

当然,抽象类可以从另一个类继承!!

一个类无法从另一个类继承的唯一时间是您希望继承的类是sealed或仅具有私有构造函数。

答案 1 :(得分:3)

是的,您可以从另一个抽象类继承抽象类。

您可以在下面找到一个示例:

public abstract class BaseClass1
{
    public abstract string Method();
}

public abstract class BaseClass2 : BaseClass1
{
}

public class UserClass : BaseClass2
{
    string name;
    public override string Method()
    {
      return name;
    }
}

如果你想在BaseClass2中使用方法Method(),你也可以从BaseClass1覆盖方法

在BaseClass2中,您可以将public override abstract string Method();放入其中,但无论有没有,预期的操作都是相同的。

答案 2 :(得分:1)

当然,Abstract类可以从非抽象类和其他抽象类继承。 当您希望任何类继承自另一个类时,您需要注意(大多数情况下)密封修饰符。

答案 3 :(得分:0)

是的,Abstract类可以从具体类(非抽象类)继承,也可以从以下内容继承 -

  • 抽象类
  • 具体课程
  • 接口

根据C#中的继承概念,Abstract类只能从一个类继承,它既可以是Abstract类,也可以是Concrete类,但它可以从多个接口继承。

但是,你不能从密封的类继承。