gpt4 book ai didi

java - 说关键字 "private"在类级别是私有(private)的是什么意思?

转载 作者:行者123 更新时间:2023-11-29 08:34:20 24 4
gpt4 key购买 nike

我正在阅读的资料表明,关键字 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;
}
}

一个 Weight2 对象可以访问另一个 weight2 对象的私有(private)字段而无需访问器方法......而只是说 w.myPounds

澄清:

我想知道对象可以从哪里访问不同对象的私有(private)数据。是否仅来自类(class)内部?或者这可以通过驱动程序完成吗?

最佳答案

A source I am reading says that the keyword private means a method or variable is private at the class level, not the object level.

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

您可以引用JLS带来有关 private 修饰符的信息:

Chapter 6. Names

6.6.1. Determining Accessibility

... the member or constructor is declared private, and access is permitted if and only if it occurs within the body of the top level class (§7.6) that encloses the declaration of the member or constructor.

关于:

So what I mean to ask is, can objects of the same type access each other's private fields without accessor methods?

的确如此。

而且比较符合规范。
它不会将对 private 成员的访问仅限于当前实例。
因此,您可能会认为此限制不存在,因此您可以为当前实例或引用当前类的任何变量调用 private 方法。
这在静态和实例上下文中当然是正确的。


作为旁注,您还应该考虑访问级别:类和实例。
private static 修饰符表示方法或变量在类级别是私有(private)的。所以,你不需要任何实例来引用它。
private 修饰符(没有 static 修饰符)意味着方法或变量在实例级别是私有(private)的。所以你需要一个实例来引用它。


关于java - 说关键字 "private"在类级别是私有(private)的是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45492881/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com