.net C#中如何向抽象类传递属性

relj7zay  于 2023-03-04  发布在  .NET
关注(0)|答案(2)|浏览(111)

我有一个继承自抽象类B的类A,我想在类A中添加一个将在抽象中使用的属性。

public class A : B
{

}

如何抽象使用属性的示例

public abstract class B
    {
        public const string action = "";

        B(string a)
        {
            a = action;   
        }

        public virtual void test(string _action)
        {
             _action = action;
        }

}
mrwjdhj3

mrwjdhj31#

不,你不能只向子节点添加父节点中可用的内容,这不是继承的工作方式(子节点从父节点继承,而不是相反)。
但是如果你想在父类中使用一个在子类中被"覆盖"的属性,那么是的,这是可能的:

public abstract class AbstractClassWithName
{
    public abstract string Name { get; set; }

    public void OutputName() => Console.WriteLine(Name); // using the Name that is initialized in the child class
}

public class ClassWithName : AbstractClassWithName
{
    public ClassWithName(string name) => Name = name;

    public override string Name { get; set; }
}
AbstractClassWithName cwn = new ClassWithName("foo");
cwn.OutputName();
rryofs0p

rryofs0p2#

无法在子类中添加将在父类中使用的属性。
要在基类中初始化property,可以使用base关键字将参数值传递给基类构造函数。

//usage
A a = new A("test");
a.test();

伪代码:

public abstract class B
{
    public string action { get; set; }
    public B()
    {
    }
    public B(string a)
    {
        action = a;
    }
    public virtual void test()
    {
        Console.WriteLine(action);
    }
}

public class A : B
{
    public A()
    {
    
    }

    public A(string a) : base(a)
    {
    
    }
}

相关问题