从子类调用超类方法
Calling superclass methods from a subclass
class OutterClass
{
public void OutterMethod()
{
Console.WriteLine("Outter method");
}
public class InnerClass
{
public void InnerMethod()
{
Console.WriteLine("Inner method");
}
}
}
OutterClass outcls = new();
outcls.OutterMethod();
OutterClass.InnerClass incls = new();
incls.InnerMethod();
我想从 OutterClass
的 class 内部的 InnerClass
调用 OutterMethod()
,这是 OutterClass
的方法。那么,我该怎么做呢?
同意维克托的观点;如果外部 class 的方法不是静态的,则必须在实例上调用它。它与任何其他“在实例上调用方法”场景没有什么不同; class 希望调用该方法的代码必须知道调用该方法的实例。如果其他地方的一些其他代码同时创建了外部和内部,那么它是唯一知道两者的东西,并负责将外部实例提供给内部实例,以便内部代码可以知道外部并调用它的方法:
class OutterClass
{
public void OutterMethod()
{
Console.WriteLine("Outter method");
}
public class InnerClass
{
private OuterClass _outer;
public InnerClass(OuterClass outer){
_outer = outer;
}
public void InnerMethod()
{
_outer.OutterMethod();
Console.WriteLine("Inner method");
}
}
}
内部实例如何了解外部实例取决于您:构造函数参数、属性、设置方法..您选择哪个取决于外部实例是否对外部实例的功能至关重要等因素内部,因此在没有传递外部(使用构造函数)的情况下永远不应该制作内部,或者在制作内部之后是否可以更改外部,但是“我什么时候应该使用构造函数 vs prop vs x?”超出了这个问题的范围
class OutterClass
{
public void OutterMethod()
{
Console.WriteLine("Outter method");
}
public class InnerClass
{
public void InnerMethod()
{
Console.WriteLine("Inner method");
}
}
}
OutterClass outcls = new();
outcls.OutterMethod();
OutterClass.InnerClass incls = new();
incls.InnerMethod();
我想从 OutterClass
的 class 内部的 InnerClass
调用 OutterMethod()
,这是 OutterClass
的方法。那么,我该怎么做呢?
同意维克托的观点;如果外部 class 的方法不是静态的,则必须在实例上调用它。它与任何其他“在实例上调用方法”场景没有什么不同; class 希望调用该方法的代码必须知道调用该方法的实例。如果其他地方的一些其他代码同时创建了外部和内部,那么它是唯一知道两者的东西,并负责将外部实例提供给内部实例,以便内部代码可以知道外部并调用它的方法:
class OutterClass
{
public void OutterMethod()
{
Console.WriteLine("Outter method");
}
public class InnerClass
{
private OuterClass _outer;
public InnerClass(OuterClass outer){
_outer = outer;
}
public void InnerMethod()
{
_outer.OutterMethod();
Console.WriteLine("Inner method");
}
}
}
内部实例如何了解外部实例取决于您:构造函数参数、属性、设置方法..您选择哪个取决于外部实例是否对外部实例的功能至关重要等因素内部,因此在没有传递外部(使用构造函数)的情况下永远不应该制作内部,或者在制作内部之后是否可以更改外部,但是“我什么时候应该使用构造函数 vs prop vs x?”超出了这个问题的范围