简体   繁体   English

在 c# 中正确使用抽象 class

[英]Proper using abstract class in c#

I tried to implant abstract class in my program like that:我试图在我的程序中植入抽象 class ,如下所示:

public abstract class DataAccess2
{
    public abstract void FindElements();
}
public class Traingle : DataAccess2
{
    public override void FindElements()
    {
        Console.WriteLine("Loading");
    }
}
public class TraingleAngular : DataAccess2
{
    public override void FindElements()
    {
        Console.WriteLine("Angular");
    }
}
    static void Main()
    {

        List<DataAccess2> dataAccess1s = new List<DataAccess2>()
        {
             new Traingle(),
            new TraingleAngular()
        };

        foreach (var data1 in dataAccess1s)
        {
            data1.FindElements();
        }

        Console.ReadLine();
    }

And i am not sure if i use proper abstract class.Can i make more optimizations?而且我不确定我是否使用了正确的抽象 class。我可以进行更多优化吗? Sorry for bad English抱歉英语不好

This is an example of an abstract class usage, but you don't use any of the benefits that the abstract class has when compared to interfaces.这是抽象 class 用法的示例,但与接口相比,您没有使用抽象 class 所具有的任何好处。

  1. You can create some methods that have their default implementation您可以创建一些具有默认实现的方法
  2. You can create a constructor that takes some arguments您可以创建一个带有一些 arguments 的构造函数

Definitely, you can create an abstraction for any class that derived from it's base class.当然,您可以为从其基础 class 派生的任何 class 创建一个抽象。 So that could be implemented more flexible.这样可以更灵活地实施。 Example:例子:

abstract class BaseClass
{
    public abstract void test();
}

...

BaseClass sub1 = new SubTest1();
BaseClass sub2 = new SubTest2();

sub1.test();

List<BaseClass> list = new List<BaseClass>();

list.Add(sub1);
list.Add(sub2);
...

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

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