如何从基类继承

时间:2014-08-28 12:27:08

标签: c# inheritance

您好我的代码如下

public partial class Class1:InheritBase1
{

 public Class1()
 { 
   //Access table1 here
 }

}

public class InheritBase2 
{
     protected DataTable table1{get;set;}
}

我需要从 InheritBase2 类访问 table1 到我的班级。

由于C#不允许多重继承,实现此目的的可能方法是什么?

谢谢所有。

2 个答案:

答案 0 :(得分:3)

您可以使用合成而不是继承来轻松解决此问题。

假设有一个班级A和一个班级BA 一个B

public class A
{
    public B AssociatedB { get; set; }
}

为什么......?

  你能详细说明吗 - 凯尔

在面向对象的编程中,有两种方法可以在对象之间创建关系。它们中的任何一个都必须是层次结构

如果您最终认为某个对象,我们将讨论继承。例如, cat 动物。也就是说,类 cat 派生自 animal

另一方面,如果你最终认为某个对象有一个 X的东西,我们将讨论组合。例如,汽车有一个引擎。

在一天结束时,如果您使用继承来共享对DataTable的引用,我真的鼓励您使用 composition ,因为您的类有一个 DataTable

public class A 
{
    public DataTable Table { get; set; }
}

public class B 
{
    public DataTable Table { get; set; }
}

DataTable someTable = new DataTable();

// Both class instances share the same DataTable
// because you set the same object to both
// class properties
A someA = new A();
someA.Table = someTable;

B someB = new B();
someB.Table = someTable;

答案 1 :(得分:2)

你可以从作文中获益。

class A : B {

}

可以替换为

class A {
   B b 
}

如果您希望A和B可以在同一个contenxt中使用,则需要介绍一个界面。

该接口允许您定义抽象功能并为其提供各种实现。

interface ISampleInterface
{
    void SampleMethod();
}

如果我们有

class B : ISampleInterface
{
     void SampleMethod() { 
         //Do some action
     }
}

现在你的A类可以或者在odrder中继承表格B来访问样本方法或使用组合。

class A : ISampleInterface {

   B b; 

   void SampleMethod() { 
         b.SampleMethod();
     }

}

然后我编码你可以像

一样使用它
 ISampleInterface  sa = new A(); 
 ISampleInterface  sb = new B();  

  sa.SampleMethod(); //Call B through A
  sb.SampleMethod(); //Call B

这只是有关更多内容的描述,您应该遵循面向对象编程的教程。