我想编写一个内部(在 C# 中)类,我在 vb.Net 中使用了关键字“朋友”。现在我想在 Java 中做同样的事情。什么是等价物?
Friend Class NewClass
End Class
Java中没有等价物friend
。您可以做的最好的事情是将这两个类放在同一个包中,并使一个类的成员包私有(即,没有public
,private
or protected
)以使它们可以被另一个访问。
Java 中没有关键字friend 或friend 等价物。当我转换 VB 代码时:
Friend Class NewClass
End Class
到 C# 代码我得到的转换是:
internal class NewClass
{
}
因此,要使其等效于 java 代码,您必须做两件事:
1st 将课程保存在您想要访问它的同一个包中。第二次声明没有任何访问修饰符的类:
class NewClass
{
}
C# 的内部相当于 Java 的默认作用域(即它自己的作用域)。
Java没有内部。
在 Visual Basic.NET 中,Friend
关键字表示可访问性。在 C# 中,等效关键字是internal
.
在 Java 中,没有这样的关键字,但是您可以通过在类声明中省略任何访问说明符来有效地获得关于包范围的相同可见性。
通过对相同类声明的 C# 和 Java 版本之间的并列比较,(为了完整起见,我还添加了 Visual Basic 版本)注意class B
以及A.Y
、B.Y
和C.Y
的声明D.Y
:
Public Class A
Public Shared X As Integer
Friend Shared Y As Integer
Private Shared Z As Integer
End Class
Friend Class B
Public Shared X As Integer
Friend Shared Y As Integer
Private Shared Z As Integer
Public Class C
Public Shared X As Integer
Friend Shared Y As Integer
Private Shared Z As Integer
End Class
Private Class D
Public Shared X As Integer
Friend Shared Y As Integer
Private Shared Z As Integer
End Class
End Class
public class A
{
public static int X;
internal static int Y;
private static int Z;
}
internal class B
{
public static int X;
internal static int Y;
private static int Z;
public class C
{
public static int X;
internal static int Y;
private static int Z;
}
private class D
{
public static int X;
internal static int Y;
private static int Z;
}
}
public class A
{
public static int X;
static int Y;
private static int Z;
}
class B
{
public static int X;
static int Y;
private static int Z;
public class C
{
public static int X;
static int Y;
private static int Z;
}
private class D
{
public static int X;
static int Y;
private static int Z;
}
}
另请参阅此 Visual Basic 和 C# 的比较以供参考。