我想编写一个内部(在C#中)类,我在vb.Net中使用了关键字“Friend”。 现在我想在Java中做同样的事情。等价物是什么?
Friend Class NewClass
End Class
答案 0 :(得分:4)
Java中没有等同于friend
的内容。您可以做的最好的事情是将两个类放在同一个包中,并使一个类包的成员 - 私有(即没有public
,private
或protected
)他们可以访问另一个。
答案 1 :(得分:1)
在Java中没有关键词朋友或等同于朋友。当我转换VB代码时:
Friend Class NewClass
End Class
到C#代码我得到的转换是:
internal class NewClass
{
}
所以要使它成为等同的java代码,你需要做两件事:
1st将课程保存在您要访问它的同一个包中。 第二个声明没有任何访问修饰符的类:
class NewClass
{
}
答案 2 :(得分:0)
C#的内部等同于Java的默认范围(这是它自己的范围)。
Java没有内部。
答案 3 :(得分:0)
在Visual Basic.NET中,Friend
关键字说明了可访问性。在C#中,等效关键字为internal
。
在Java中,没有这样的关键字,但是通过在类声明中省略任何访问说明符,您可以有效地获得与包范围相同的可见性。
取自同一类声明的C#和Java版本之间的a side-by-side comparison,(我还为完整性添加了Visual Basic版本),注意class B
以及{{1}的声明}},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;
}
}