【问题标题】:C# abstract class desgin, is that possible put a constuctor in abstract class and call base to access themC#抽象类设计,是否可以在抽象类中放置一个构造函数并调用base来访问它们
【发布时间】:2022-01-06 02:13:11
【问题描述】:

我在练习c#抽象类和继承,但我想知道派生类是否可以通过调用基类来访问构造函数

public abstract class A
{
    protected bool value_A;
    protected int value_B;
    public A(int input)
    {
      A = true;
      B = false;
    }
    public abstract int function_B();
  }

}
public class childA : A
{
    public childA (int input):base(input)
    { 
    }
    public override int function_B()
    {
      //do smth
    }   
}
public class childB : A
{
    public childB(int input):base(input)
    {   
    }
    public override int function_B()
    {
      //do something different
    }
    public void functionC(int input)
    {
        
    }   
}

我很困惑是应该使用这个抽象类设计还是直接使用继承 -> 在类 A 中声明一个虚函数。

【问题讨论】:

  • 如果我调用 A.fucntion_B 会发生什么?
  • 当你尝试时会发生什么?

标签: c# abstraction


【解决方案1】:
  1. 是的,你可以。派生类 c'tor 可以调用基类一,即使基类是抽象的。
  2. 一般来说,如果您想要重用某个通用功能(或特征),并且实例化基类没有意义(因此您将其设为抽象类),则使用抽象基类是有意义的。 一个基本示例是“Shapes”层次结构,其中抽象基类 Shape 具有颜色和中心(例如)和虚拟方法 Draw,所有特定形状都继承自 Shape 并为每个特定形状实现实际的 Draw 功能。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-11-17
    • 2023-03-04
    • 1970-01-01
    • 1970-01-01
    • 2014-08-09
    • 1970-01-01
    • 2010-09-20
    • 1970-01-01
    相关资源
    最近更新 更多