C#类从类的派生版本或基版本继承
给出下面的示例,是否可以使用ClassyFoo扩展类Foo,并使ClassyFoo创建的Bar实例从ClassyFoo继承而来,同时保持由Foo创建的Bar实例仍然从Foo继承 例如:C#类从类的派生版本或基版本继承,c#,C#,给出下面的示例,是否可以使用ClassyFoo扩展类Foo,并使ClassyFoo创建的Bar实例从ClassyFoo继承而来,同时保持由Foo创建的Bar实例仍然从Foo继承 例如: class Foo { protected Foo() { Console.WriteLine("Setting up Foo"); } public static void Show() {
class Foo
{
protected Foo()
{
Console.WriteLine("Setting up Foo");
}
public static void Show()
{
Console.WriteLine("Showing Foo");
var bar = new Bar();
}
}
class ClassyFoo : Foo
{
public ClassyFoo() : base()
{
Console.WriteLine("Setting up Classy Foo");
}
public new static void Show()
{
Console.WriteLine("Showing Classy Foo");
var bar = new Bar();
}
}
class Bar: Foo
{
public Bar() : base()
{
Console.WriteLine("Setting up Bar");
}
}
ClassyFoo.Show()的所需输出为:
展示经典美食设置Foo
设置一流的Foo
设置栏
Foo.Show()的输出为: 显示Foo
设置Foo
设置栏
情况是,类栏向Foo添加了一些配置/专门化,但classyfoo也添加了一些配置/专门化。但是Bar和ClassyFoo的专门化可以存在于同一个对象上
我试图避免使用从ClassyFoo继承的重复条。实际上,有多个条形图,但只有一个ClassyFoo,因此会有很多重复。我认为这是不可能的。一个类正好有一个基类 您可能能够将ClassyFoo和/或Bar实现为接口,并让实际的类继承其中一个或另一个,或同时继承两者
根据实际的表示和代码重用,我会使两个接口(类似的处理)或一个接口成为抽象类(您可以在其中填充一堆代码)因为C#不支持多重继承,所以您必须使用接口,如果不使用接口,您就无法做到这一点。不确定您要实现什么,但您调用引用Bar实例的Foo.Show()与ClassyFoo si毫无关系,您无法从中得到任何东西。实例不是从类继承的,实例是从其他类继承的类的实例。您有
Bar:Foo
,因此对于Bar
的所有实例都是如此。听起来你可能需要另一个子类,ClassyBar
。也许可以看看这种在C#中创建Mixin的方法:是的,希望有一种方法可以修改Bar的定义,从而通过泛型或其他我不太了解的东西与Foo和ClassyFoo联系起来。但听起来好像不是。