gpt4 book ai didi

C# 基类和 2 个派生类初始化

转载 作者:太空宇宙 更新时间:2023-11-03 20:21:05 25 4
gpt4 key购买 nike

所以我只想为我的所有函数使用一个类对象,但我不想直接使用该类,而是需要访问派生类的成员。

举个例子:

class A {
public A() {

}

public void DoSomething() { }
}

class B : A {
public B() {

}

public void DoSomethingBetter() { }
}

class C : A {
public C() {

}

public void DoSomethingBest() { }
}

class Runner {
public static void Main(String[] args) {
A objB = new B();
objB.DoSomethingBetter(); //Won't compile

A objC = new C();
objC.DoSomethingBest(); //Won't compile
}
}

我不想将它们初始化为 B objB = new B(),这不是目的,我已经知道这可能是一个解决方案。我只需要为此使用父类。

谢谢

最佳答案

如果您要声明具有不同名称的方法,则必须在代码中实例化显式类型。

如果所有方法都执行相同的功能但方式不同,您应该覆盖基类中的方法,而不是用不同的名称重新实现它。

public class A
{
public virtual void DoSomething()
{
// some implementation
}
}

public class B : A
{
public override void DoSomething()
{
// body of DoSomethingBetter
}
}

public class C : A
{
public override void DoSomething()
{
// body of DomSomethingBest
}
}

您的应用程序主体将简化为:

A b = new B();
A c = new C();

b.DoSomething() // uses logic of DoSomethingBetter
c.DoSomething() // uses logic of DoSomethingBest

关于C# 基类和 2 个派生类初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13481468/

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