从c#中的子类访问父类的方法

问题描述 投票:0回答:1

我让自己陷入了困境,试图从子类内部访问父类中的方法。我认为我对其工作原理的方法/理解是错误的。

我的应用程序的条目看起来有点像这样:

class my_app
{
  public static void Main(string[] args){

    core_functionality = new Core_functionality();
    core_functionality.start()
    // ...
    core_functionality.stop()
  }
}

那么我的应用程序的核心就在这个类中:

public class Core_functionality {

  private Sub_functionality sub_functionality; // does some other stuff underneath this class.

  public Core_functionality(){ 
    //constructor, initialises the sub class.
    sub_functionality = new Sub_functionality();
  }

  public do_a() {
    // do stuff here
    sub_functionality.do_stuff() 
  }

  public do_b(){
    // do other stuff here
  }
}

最后在我的 Sub_functionity 类中,我想在启动并启动它的父 core_functionity 中调用 do_a() ..

public class Sub_functionality
{

  public class do_stuff() {
   
    // Somehow call Core_functionality.do_a() in here....

  }
}

我有点不知道如何做到这一点。 Visual Studio 不会让我访问 sub_functionity 类中的 core_functionity.stop()。

如果我这样做

public class Sub_functionality : Core_functionality
所以它会继承,我会在输出窗口中得到一个调用构造函数的恒定循环,并最终放弃 stackOverFlowException。

欢迎指出我在这里做错了什么。谢谢你。

c# .net oop
1个回答
1
投票

如果我做公共类子功能:核心功能所以它 继承,我在输出窗口中得到一个常量循环,调用 构造函数,最后因 stackOverFlowException 放弃。

这是因为:

  public Core_functionality(){ 
    //constructor, initialises the sub class.
    sub_functionality = new Sub_functionality();
  }

Sub_functionality
继承作为其无参数构造函数。所以构造函数正在调用自身。

我认为你混淆了组合和继承。您可能需要弄清楚您想使用哪个。

如果

Sub_functionality
继承自
Core_Functionality
,那么它将能够从
Core_Functionality
调用非私有方法。如果
Sub_funtionality
不继承自
Core_Functionality
,那么它将需要对
Core_functionality
对象的引用才能调用其非静态方法。

© www.soinside.com 2019 - 2024. All rights reserved.