繁体   English   中英

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

[英]can abstract class inherit another abstract class c#

我是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 override abstract string Method(); 在内,但有或没有它预期的行动也是相同的。

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

是的,一个抽象类可以从一个具体的类(非抽象类)继承,也可以从以下继承 -

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM