【发布时间】:2018-05-26 15:30:23
【问题描述】:
我是java新手...如果我遗漏了什么,请告诉我。
我尝试访问私有方法,如下所示:
public class PublicClassPrivateMethodAndVariableAccess
{
private int a=23;
private void show()
{
System.out.println("a = "+a);
}
public static void main(String... arg)
{
PublicClassPrivateMethodAndVariableAccess pr = new PublicClassPrivateMethodAndVariableAccess();
System.out.println("using method showing pr.show() ");
pr.show();
System.out.println("pr.a = "+pr.a);
}
}
这将显示输出为:
using method showing pr.show()
a = 23
pr.a = 23
但是当我使用类似的代码以不同的方式访问私有方法时......:
class Testclass
{
private int a=23;
private void show()
{
System.out.println("a = "+a);
}
}
public class NoModifierClassPrivateMethodAndVariableAccess
{
public static void main(String... arg)
{
Testclass pr = new Testclass();
System.out.println("using method showing pr.show() ");
pr.show();
System.out.println("pr.a = "+pr.a);
}
}
...它显示错误如下:
NoModifierClassPrivateMethodAndVariableAccess.java:19: error: show() has private
access in Testclass
pr.show();
^
NoModifierClassPrivateMethodAndVariableAccess.java:20: error: a has private access in Testclass
System.out.println("pr.a = "+pr.a);
^
2 errors
我在问为什么第二个代码无法访问私有方法?
【问题讨论】:
-
private方法仅在包含它的类中可见。示例 1:一切都在PublicClassPrivateMethodAndVariableAccess中,因此show()是可见的。在示例 2 中:您将方法放在另一个类中,因此该方法不可见。让它public. -
“设为
public” 或者保持私有并添加 getter 和/或 setter。 -
谢谢我明白..在我的代码中,Testclass 是公共类还是私有类?
标签: java private member-functions