我让自己陷入了困境,试图从子类内部访问父类中的方法。我认为我对其工作原理的方法/理解是错误的。
我的应用程序的条目看起来有点像这样:
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。
欢迎指出我在这里做错了什么。谢谢你。
如果我做公共类子功能:核心功能所以它 继承,我在输出窗口中得到一个常量循环,调用 构造函数,最后因 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
对象的引用才能调用其非静态方法。