gpt4 book ai didi

c# - 抽象类的非静态方法和静态方法有什么区别?

转载 作者:行者123 更新时间:2023-11-30 12:23:27 25 4
gpt4 key购买 nike

我知道在抽象类中使用静态方法不是最佳实践,但如果我在抽象类中同时使用静态和非静态方法有什么区别。

我假设调用这些方法没有区别,因为我们不能为抽象类创建实例,所以我们可以只使用类名来调用静态和非静态方法。

除了关键字“静态”之外,它们之间还有其他区别吗?

例如:抽象类:

abstract public class AbstractClass
{
#region Constructor
protected AbstractClass(Args args): this(args)
{
}
#endregion

#region public static methods

public static object FormLoad(Args args)
{
//Logic
}

public static object Sample(Args args)
{
//Logic
}

#endregion


#region Public non-static methods

public AbstractClass CreateResponse(Args args)
{
//Logic
}

public void ClearDialog()
{
//Logic
}

#endregion

#region Abstract Method
abstract protected void Responses();
#endregion

}

派生类:

   public class DerivedClass : AbstractClass
{
#region Public Constructors

public DerivedClass(Args args)
: base(args)
{
}

#endregion

#region Protected Methods

protected override void Responses()
{
//logic
}

#endregion
}

最佳答案

让我试着回答你的两个问题 -

I know it is not a best practice to use Static method in Abstract class, but what is the difference If I use both Static and non static method in abstract class

在抽象类中同时使用静态和非静态方法是合法的,是的,您认为在抽象类中使用静态方法不是最佳实践是正确的。当我概念化一个 abstract 类时,它应该是无形的,只是抽象的,就像 Shape。只有当某个类继承了一个抽象类时,它才会像 Circle 或 square 一样在现实世界中获得生命和意义。所以是的,您可以像使用任何其他类一样使用静态和非静态方法,这对抽象类来说意义不大。

Is there any difference in calling these methods? When static method of an abstract will be invoked since we can't create object for an Abstract class.

您可以像往常一样在类的实例上调用非静态方法,是的,您是对的我们不能为抽象类创建对象,静态方法将像这样直接用类名调用,并且在编译器执行语句时立即调用。

MyAbstractClass.StaticMethod();

关于c# - 抽象类的非静态方法和静态方法有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36742276/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com