相关疑难解决方法(0)

这个私有变量如何访问?

编写以下代码时,编译器如何不抱怨?

public class MyClass 
{
    private int count;

    public MyClass(int x){
        this.count=x;
    }

    public void testPrivate(MyClass o){
        System.out.println(o.count);
    }   
}
Run Code Online (Sandbox Code Playgroud)

即使它是testPrivate写入的同一个类的实例,它不应该给出编译错误System.out.println(o.count)吗?毕竟,我试图直接访问私有变量.
代码甚至运行良好.

java private

42
推荐指数
3
解决办法
6245
查看次数

Java私有字段可见性

所以前几天我正在创建一个类,当我意识到它生成了以下工作代码时,使用Eclipse的方法创建了equals方法:

class Test {
  private int privateInt;
  [...]
  public boolean equals(Object obj) {
    [...]
    Test t = (Test) obj;
    if ( t.privateInt == privateInt ) {
    [...]
  }
}
Run Code Online (Sandbox Code Playgroud)

t.privateInt .. ???? 它假设是私人的!所以我想除了私有,受保护,包保护和公共之外还有一个字段可见性.

那么这里发生了什么?怎么称呼?有人会用这个吗?这不会破坏封装吗?如果班级没有改变者并且我改变了这个怎么办?这也发生在C++上吗?这是一个OO成语吗?如果没有,那为什么Java会这样做呢?

一般来说,我在哪里可以找到有关此信息?

谢谢.

java language-features visibility

17
推荐指数
1
解决办法
3253
查看次数

为什么不禁止访问私有字段?

对于我在大学的学习,我不得不做一些丑陋的java基础知识,比如没有封装的工作,同一类的主要方法等等.(我不想在java风格指南上开一个讨论,我只想澄清一下,我不会在大学之外写这样的东西)

我偶然发现了一个我无法向自己解释的行为:

public class Person {
  // fields
  private int age;

  public static void main(String[] args) {
    Person foo1 = new Person();
    foo1.age = 40;
    System.out.println(foo1.age);
  }
}
Run Code Online (Sandbox Code Playgroud)

为什么这段代码编译运行没有错误?我怎么可能访问私人领域?由于主要方法在同一个类中而导致奇怪的行为?

java

4
推荐指数
2
解决办法
413
查看次数

在Java中访问私有字段

我不明白为什么我可以访问private int i课堂外的私人课程.

public class Fish {

    private int i = 1;

    public static void main(String[] args) {
        Fish k = new Fish();
        k.i = 2; // it IS possible
    }

}
Run Code Online (Sandbox Code Playgroud)

java

2
推荐指数
2
解决办法
241
查看次数

标签 统计

java ×4

language-features ×1

private ×1

visibility ×1