java中vb.net'friend'关键字的等价物是什么?

时间:2012-12-02 09:27:26

标签: c# java vb.net friend internal

我想编写一个内部(在C#中)类,我在vb.Net中使用了关键字“Friend”。 现在我想在Java中做同样的事情。等价物是什么?

Friend Class NewClass

End Class

4 个答案:

答案 0 :(得分:4)

Java中没有等同于friend的内容。您可以做的最好的事情是将两个类放在同一个包中,并使一个类包的成员 - 私有(即没有publicprivateprotected)他们可以访问另一个。

答案 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.YB.YC.Y

Visual Basic版本:

D.Y

C#版本:

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

Java版本:

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;
    }
}

另请参阅this comparison of Visual Basic and C#以供参考。