C# 如何从基类继承

C# 如何从基类继承,c#,inheritance,C#,Inheritance,嗨,我的代码如下 public partial class Class1:InheritBase1 { public Class1() { //Access table1 here } } public class InheritBase2 { protected DataTable table1{get;set;} } 我需要从InheritBase2类访问表1到我的类 由于C#不允许多重继承,那么实现这一点的可能方法是什么 谢谢。你可以从这篇作文中获益 cl

嗨,我的代码如下

public partial class Class1:InheritBase1
{

 public Class1()
 { 
   //Access table1 here
 }

}

public class InheritBase2 
{
     protected DataTable table1{get;set;}
}
我需要从InheritBase2类访问表1到我的类

由于C#不允许多重继承,那么实现这一点的可能方法是什么


谢谢。你可以从这篇作文中获益

class A : B {

}
class A : ISampleInterface {

   B b; 

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

}
可替换为

class A {
   B b 
}
如果希望A和B可以在同一上下文中使用,则需要引入一个接口

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

interface ISampleInterface
{
    void SampleMethod();
}
万一我们有

class B : ISampleInterface
{
     void SampleMethod() { 
         //Do some action
     }
}
现在,类A可以访问或继承odrder中的表单B,以访问示例方法或使用组合

class A : 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

这只是一个简单的描述,你应该遵循一个关于面向对象编程的教程

你可以从作文中获益

class A : B {

}
class A : ISampleInterface {

   B b; 

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

}
可替换为

class A {
   B b 
}
如果希望A和B可以在同一上下文中使用,则需要引入一个接口

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

interface ISampleInterface
{
    void SampleMethod();
}
万一我们有

class B : ISampleInterface
{
     void SampleMethod() { 
         //Do some action
     }
}
现在,类A可以访问或继承odrder中的表单B,以访问示例方法或使用组合

class A : 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

这只是一个简单的描述,你应该遵循一个关于面向对象编程的教程

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

假设有一个类
a
和一个类
B
<代码>A有一个
B

public class A
{
    public B AssociatedB { get; set; }
}
为什么?
你能详细说明一下吗?凯尔

在面向对象编程中,有两种方法可以创建对象之间的关系。它们中的任何一个都必然具有等级性

如果你最终认为某个对象是某种东西,我们将讨论继承。例如,猫是一种动物。也就是说,猫科动物起源于动物

另一方面,如果你最终认为某个物体有一个X东西,我们将讨论构图。例如,一辆汽车有一个发动机

最后,如果您使用继承来共享对
数据表
的引用,我真的鼓励您使用组合,因为您的类有一个
数据表

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;

您可以使用组合而不是继承轻松地解决此问题

假设有一个类
a
和一个类
B
<代码>A有一个
B

public class A
{
    public B AssociatedB { get; set; }
}
为什么?
你能详细说明一下吗?凯尔

在面向对象编程中,有两种方法可以创建对象之间的关系。它们中的任何一个都必然具有等级性

如果你最终认为某个对象是某种东西,我们将讨论继承。例如,猫是一种动物。也就是说,猫科动物起源于动物

另一方面,如果你最终认为某个物体有一个X东西,我们将讨论构图。例如,一辆汽车有一个发动机

最后,如果您使用继承来共享对
数据表
的引用,我真的鼓励您使用组合,因为您的类有一个
数据表

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;

请将类
InheritBase1
显示在一个单独的文件中好吗?使用接口。您不能从多个类继承,但可以实现多个接口。您必须更改设计,或使用允许多个继承的语言。合成可能比继承更好。能否将类
InheritBase1
显示在单独的文件中?是否
InheritBase2
使用接口。您不能从多个类继承,但可以实现多个接口。您必须更改设计,或者使用一种允许多重继承的语言。也许组合比继承更好。你能详细说明你能详细说明我如何使用接口吗?顺便说一句,我发现这个接口示例有点模糊,因为它显示了如何使对象共享相同的方法(显然,两者都实现相同的接口)。我相信,在一天结束时,无论是否使用接口,都应该提供
DataTable
的关联。没有接口就可以解决这个问题:如何使用接口?顺便说一句,我发现这个接口示例有点模糊,因为它显示了如何共享相同的方法(显然,两者都实现了相同的接口)。我相信,在一天结束时,无论是否使用接口,都应该提供
DataTable
的关联。它可以在没有接口的情况下解决:D