2017-08-03 180 views
1

我正在阅读的一个消息来源说,关键字private表示一个方法或变量在类级别是私有的,而不是对象级别。关键词“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; 
    } 
} 

一个1加权对象可以访问不同的重量2对象的私有字段,而存取方法...而是通过只是说w.myPounds

澄清:

我想从那里对象可以访问不同对象的私有数据就知道了。它仅仅来自课堂内部吗?或者这可以从驱动程序完成?

+1

[在Java中,默认,公共,保护和私有之间的区别]的可能重复(https://stackoverflow.com/questions/215497/in-java-difference-between-default-public-protected-和私人) – DevelopingDeveloper

+0

我的问题不是关于标签之间的差异。这是关于班级内部“私人”的含义......更多技术细节未在您引用的线索中回答。 –

+0

“说到在课堂上给予隐私而不是对象级别,究竟意味着什么?”这意味着“...相同类型的对象[可以]不使用访问器方法访问彼此的私有字段。” –

回答

3

我正在阅读的来源说,关键字private表示一种方法或 变量在类级别是私有的,而不是对象级别。

我不知道你的来源。这没有错,但也不清楚。

你可能指的是带来了私人修改此信息JLS

第6章名

6.6.1。可存取

...的成员或构造声明私有的,而且访问是 允许当且仅当它发生的顶层 类的主体中(第7.6节)包围成员的声明或 构造函数。

关于:

所以,我的意思是要问什么是,可以在相同类型的访问每个 对方的私有字段没有访问方法的对象?

确实。

而且它与规范相当一致。
它不限制仅对当前实例访问private成员。
因此,您可能会认为此限制不存在,因此您可以为当前实例或任何引用当前类的变量调用private方法。
在实例环境中它当然是静态的。


作为一个侧面说明,你也应该考虑到级别的访问权限:类和实例。
private static修饰符表示方法或变量在类级别是私有的。所以,你不需要任何实例来引用它。
虽然private修改器(不含static修饰符)表示方法或变量在实例级别是私有的。 所以你需要一个实例来引用它。


+0

谢谢......抱歉我的问题缺乏澄清......我的意思是说'w.myPounds'。 –

+0

不客气。不要担心:) – davidxxx

+0

你有一个好点 - upvoting优秀的内容是绝对公平的!干杯! – GhostCat

0

不完全确定你的问题到底是什么。不过,我会给你一个我想要的东西的基本总结。

如果一个变量或一个方法是私有那么它可被访问或在它存在的类中使用。

如果一个变量或一个方法是公共的话,就可以通过其他类访问。

看看这个网站它可以帮助你,它肯定帮了我。

https://docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html