gpt4 book ai didi

java - 嵌套类在C#中不能调用父类,但在java中可以

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:05:46 27 4
gpt4 key购买 nike

如果我的父类有嵌套类。然后在 Java 中,嵌套类可以调用其父类中的方法。但在 C# 中你不能这样做,它会提示说“不能调用非静态的外部类方法”。

行为不同的原因是什么?

PS:我是一名java程序员,正在学习C#,所以请原谅我的知识有限

例子:

public class parent{

void methodA(){ }


public class nested{
void methodB(){
methodA(); /// <-- not allowed in C# but good in java
}
}
}

最佳答案

这是因为在java中我们有inner classes ,而在 c# 中我们有 nested classes .

内部类具有对外部类的隐式引用,从而可以从内部类调用该类的方法。

嵌套类只是包围类,没有对“外部”类的引用。例如,如果我们有两个“外部”类的实例,您会调用哪个方法?

要在 C# 中获得大致相同的结果,您可以这样做

class Outer
{
private void foo() {}
class Nested
{
private readonly Outer _outer;
public Nested(Outer outer)
{
_outer = outer;
}

public void bar()
{
_outer.foo(); // now we can call methods from "outer" class
}
}
}

这基本上也是在 java 内部类语法的幕后发生的事情。

要在 java 中获取嵌套类,就像我们在 c# 中一样,使用 static 关键字这样

class Outer
{
static class Nested
{
}
}

关于java - 嵌套类在C#中不能调用父类,但在java中可以,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37768107/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com