Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# C语言中的抽象类#_C#_C# 4.0 - Fatal编程技术网

C# C语言中的抽象类#

C# C语言中的抽象类#,c#,c#-4.0,C#,C# 4.0,我想在C#中创建一个抽象类。目前,我在C#上这门课: 我想让它成为抽象类,另外两个类将继承它。我是否只需要在类中放置抽象关键字就可以更改属性。那么将继承这个类的类呢。这些课程需要改变什么 请提出建议。您只需将该类标记为摘要: public abstract class CreditReportViewModel { public Person Person { get; set; } public DateTime ReportDate { get; set; }

我想在C#中创建一个抽象类。目前,我在C#上这门课:

我想让它成为抽象类,另外两个类将继承它。我是否只需要在类中放置抽象关键字就可以更改属性。那么将继承这个类的类呢。这些课程需要改变什么


请提出建议。

您只需将该类标记为
摘要

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 class CreditReportViewModel
{
    public Person Person { get; set; }       
    public DateTime ReportDate { get; set; }
    public string PersonalAddress { get; set; }
    public string EmployerAddress { get; set; }
}

但是我认为没有任何有效的理由你应该将上面的类抽象化。

使类抽象化的唯一需要的是添加关键字:

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 { }
如果您还想使成员
抽象化
,同样的事情也会发生:

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关键字,看看编译时会发生什么。:)如果这就是CreditReportViewModel中的所有行为,那么它作为一个接口可能更有意义,尽管在这种情况下,实现者实际上必须进行一些实现。
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
    }
}