java - 对象引用能够直接访问私有(private)数据成员

标签 java

public class College{ 
  int year; 
  String name; 
  College(int year,String name){ 
        year=year; 
        name=name; 
  } 

  public static void main(String[] args) { 
        College first=new College(1998,"BITS"); 
        System.out.println("The year is:"+first.year); 
        System.out.println("The name is:"+first.name); 
  } 
}

我的输出是: 年份是0 名称为 null

这是怎么回事? 据我所知,对象首先不能直接访问私有(private)数据成员。

最佳答案

发生这种情况是因为您在构造函数内隐藏了 yearname 字段。

使用其中之一:

  College(int year,String name){ 
        this.year=year; 
        this.name=name; 
  } 

或者:

  College(int y,String n){ 
        year=y; 
        name=n; 
  } 

我更喜欢第一个选项。

顺便说一句,这些字段不是私有(private)的,因为您没有将它们声明为一个,并且默认值为package。 即使您将它们设置为私有(private),属于类的静态方法也可以看到私有(private)成员变量。

关于java - 对象引用能够直接访问私有(private)数据成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16757229/

相关文章:

java - Android:为什么要设置可见性(View.GONE);或 setVisibility(View.INVISIBLE);不工作

java - 将 cellpadding 添加到 Java JTable

java - 是否可以在 Java 中动态设置对象属性(无需反射)?

java - 来自缓存的 Flowable 和使用 RxJava 的其他 Flowable for DataSource

java - 在java中实现一个懒惰的供应商

java - 是否可以在 Spring Boot 中读取响应的正文?

java - 如何在GWT中设置属性?

java - 使用 Jacorb 的 CXF Corba

java - 非常简单的排序算法不起作用

java - 无法在 Android Studio 中添加 fragment 、XML、 Activity