“同一个类的不同对象可以访问对方的private成员变量或调用对方的private成员方法”这句话怎么理解?

java里的... java里的 展开
 我来答
金木08
推荐于2017-12-17 · TA获得超过224个赞
知道答主
回答量:20
采纳率:0%
帮助的人:5万
展开全部

类或者对象成员可以通过访问说明符设定安全机制,其中成员包括成员变量或成员方法。

其中java支持的四种访问限制:

  1. public——所有类都可以访问

  2. private——只有本类可以访问

  3. protected——子类或者同一包的类可以访问

  4. <省略>——只允许同一包的类可以以访问

    下图是访问级别表

所以,同类的两个不同的private成员变量可以进行互访。

匿名用户
2018-01-22
展开全部
public class Student 
{
private String name;
private int age;
private String sex;
public boolean compare(Student s)
{
return this.age==s.age;
}
}

我也想问,应该是你说的这种吧

age不是私有的吗,怎么可以直接访问

=============

抄了点,还是不太明白,只明白下面这点。

字段的private修饰符基于类的,类的方法可以访问这个方法的类任何对象的private字段

4.3.7 Class-Based Access Privileges

You know that a method can access the private data of the object on which it is invoked. What many people find surprising is that a method can access the private data of all objects of its class. For example, consider a method equals that compares two employees.

class Employee
{
    . . .
    public boolean equals(Employee other)
    {
        return name.equals(other.name);
    }
}

A typical call is

if (harry.equals(boss)) . . .

This method accesses the private fields of harry, which is not surprising. It also accesses the private fields of boss. This is legal because boss is an object of type Employee, and a method of the Employee class is permitted to access the private fields of any object of type Employee.

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-08-21
展开全部
1、一个类可以创建多个对象。2、每个类的对象都可以来访问、当前类的成员变量。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
帐号已注销
2018-07-07
知道答主
回答量:21
采纳率:0%
帮助的人:1.7万
展开全部

转自网页链接的回答:

按private的作用级别,OOP语言大体可以分两类:
一类的访问限制级别是'类',同一类的不同对象可以互相访问private成员;
另一类的访问限制级别是'对象',一个对象的private成员只有该对象本身才能访问,其它对象即使同属一类也不行.
前者如C系语言(JAVA,C++,C#),后者如smalltalk.
从某种意义上说,C系语言更像基于类的语言,而smalltalk是纯粹的面向对象的语言.   

为什么C系语言要采取这样的方式,而不将面向对象贯彻得更彻底呢?
其实这是基于下面目的的一种折中:
用最简单的方式实现最好的封装.
在编程中,同类对象间访问彼此成员是经常要发生的.比如对象的复制,比较等问题.
如果private进行了'对象'级的限制,我们就不得不用诸如GetXxx()/SetXxx()等public方法对private成员进行操作.
这使得处理过程相当繁琐.
而更重要的是,仅仅为了类内问题,而用public方法处理本不该被暴露在类外的private成员,反而使类封装性遭到了不必要的破坏.
由上,我们看到过分追求对象的保护,反而会降低类的保护强度,这是适得其反的.
造成上述矛盾的根本原因是类保护和对象保护的层次差异.
大多数情况下,比起同类对象间的访问限制,我们更需要保证不同类对象间的访问限制.

我认为原因是这样的,但以上内容只是我个人的思考.

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式