我正在阅读的一篇文章说,关键字private
表示方法或变量在类级别是私有的,而不是对象级别。
在像这样的代码块中有意义:
public class Weight2 implements Comparable<Weight2>
{
private int myPounds, myOunces;
public Weight2()
{
myPounds = myOunces = 0;
}
public Weight2(int x, int y)
{
myPounds = x;
myOunces = y;
}
public int compareTo(Weight2 w)
{
if(myPounds<w.myPounds)
return -1;
if(myPounds>w.myPounds)
return 1;
if(myOunces<w.myOunces)
return -1;
if(myOunces>w.myOunces)
return 1;
return 0;
}
}
Weight2对象可以访问不同weight2对象的私有字段而无需访问者方法......而只是说w.myPounds
。
澄清:
我想知道对象可以从哪里访问不同对象的私有数据。它只来自课堂内吗?或者这可以通过驱动程序完成吗?
答案 0 :(得分:3)
我正在阅读的一篇文章说,关键字private代表一种方法或 变量在类级别是私有的,而不是对象级别。
我不知道你的来源。这没有错,但也不清楚。
您可以参考JLS带来有关私有修饰符的信息:
第6章名称
<强> 6.6.1。确定可访问性
...成员或构造函数被声明为私有,访问权限是 当且仅当它出现在顶层的主体内时才被允许 包含成员或的声明的类(第7.6节) 构造
关于:
所以我的意思是,相同类型的对象可以访问每个 其他没有访问方法的私有字段?
事实上。
它与规范相当一致
它不会将private
成员的访问权限仅限于当前实例
因此,您可能会认为此限制不存在,因此您可以为当前实例或引用当前类的任何变量调用private
方法。
当然在静态中也是如此,例如实例上下文。
作为旁注,您还应该考虑级别访问:类和实例
private static
修饰符表示方法或变量在类级别是私有的。因此,您不需要任何实例来引用它
虽然private
修饰符(没有static
修饰符)表示方法或变量在实例级别是私有的。
所以你需要一个实例来引用它。
答案 1 :(得分:1)
答案 2 :(得分:0)
不完全确定您的问题是什么。不过,我会给你一个我认为你想要的基本概要。
如果变量或方法是私有的,则只能在其所在的类中访问或使用它。
如果变量或方法是公共的,那么其他类可以访问它。
看看这个网站它可以帮助你它肯定帮助了我。
https://docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html