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

C# 抽象类可以继承另一个抽象类c吗#,c#,asp.net-mvc-4,inheritance,entity-framework-5,C#,Asp.net Mvc 4,Inheritance,Entity Framework 5,我是C#EF的初学者。在设计新的示例应用程序时,我遇到了一个愚蠢的疑问。抽象能否继承另一个抽象类 using System; using System.ComponentModel.DataAnnotations; namespace Spark.BusinessObjects.Common { public abstract class BOBase { public virtual int UpdatedBy { get; set; } [DataType(D

我是C#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属性。我可以像上面那样使用吗。是
正确吗?

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


一个类不能从另一个类继承的唯一时间是当您希望从中继承的类是或只有私有构造函数时。

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

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

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覆盖抽象字符串方法()在中,但有或没有它,预期的操作都是相同的。

是的,抽象类可以从具体类(非抽象类)继承,也可以从以下类继承-
  • 抽象类
  • 混凝土类
  • 接口
根据C#中的继承概念,抽象类只能从一个类继承,可以是抽象类,也可以是具体类,但可以从多个接口继承


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

绝对地,抽象类可以从非抽象类和其他抽象类继承。
当您希望任何类从另一个类继承时,您将需要(大部分时间)注意sealed修饰符

你试过编译吗?是的,我编译过。没有编译时错误,所以答案是:抽象类可以扩展抽象类。我想在运行时我会遇到任何异常。正确的。您甚至可以使抽象类从非抽象类派生。我确实认为应该提到的是,您只能从单个类继承,但您可以在一个类上实现任意多个接口。啊,还有一种情况是,当基类为
静态时,您无法继承。