2011-05-24 71 views
2

我想在C#中创建一个抽象类。目前,我在C#中有这个类:C#中的抽象类#

public class CreditReportViewModel 
{ 
    public Person Person { get; set; }  
    public DateTime ReportDate { get; set; } 
    public string PersonalAddress { get; set; } 
    public string EmployerAddress { get; set; } 
} 

我想让它成为抽象类,其他两个类将继承它。我是否需要将抽象关键字与类放在一起以便需要更改属性。什么类会继承这个类。这些课程需要改变什么?

请建议。

+2

我不得不承认,我建议只是试图把抽象关键字放进去,看看编译时会发生什么。 :) – Chris 2011-05-24 11:27:45

+0

如果这是CreditReportViewModel中的所有行为,它可能会更有意义作为接口,但在这种情况下,实现者实际上必须执行一些操作。 – Massif 2011-05-24 11:57:41

回答

4

使课堂abstract唯一需要是添加关键字:

public abstract class CreditReportViewModel 
{ 
    public Person Person { get; set; }  
    public DateTime ReportDate { get; set; } 
    public string PersonalAddress { get; set; } 
    public string EmployerAddress { get; set; } 
} 

在这种情况下,实现类不需要添加任何附加的实现:

class Derived : CreditReportViewModel { } 

如果您想要让会员abstract以及同样的事情去那里:

public abstract class CreditReportViewModel 
{ 
    public Person Person { get; set; }  
    public DateTime ReportDate { get; set; } 
    public string PersonalAddress { get; set; } 
    public string EmployerAddress { get; set; } 
    public abstract float MakeSomeCalculation(); 
} 

public class Derived : CreditReportViewModel 
{ 
    public override float MakeSomeCalculation() 
    { 
     // This method must be implemented in the derived class 
    } 
} 

典型的情况是abstract基类暴露了需要由派生类实现的一些abstract成员。

5

所有你需要做的是将类标记为abstract

public abstract class CreditReportViewModel 
{ 
    public Person Person { get; set; }  
    public DateTime ReportDate { get; set; } 
    public string PersonalAddress { get; set; } 
    public string EmployerAddress { get; set; } 
} 
2

这取决于你希望类是什么。通常将抽象关键字放在类级别上就足够了。如果你想拥有抽象属性,你必须将它们标记为抽象。

只要您将类标记为抽象类,派生类就不需要任何更改。使用抽象属性可以强制派生类实现这些属性。

1

是的,你需要把抽象的关键词中

public abstract class CreditReportViewModel 
{ 
    public Person Person { get; set; }  
    public DateTime ReportDate { get; set; } 
    public string PersonalAddress { get; set; } 
    public string EmployerAddress { get; set; } 
} 

,但我不认为任何正当理由你应该让上面的类抽象。