2 jiangshaoxin1987 jiangshaoxin1987 于 2013.09.15 01:29 提问

java 一个类的对象访问私有属性的问题

public class ModifierTest1
{
public static void main( String[] args )
{
A a = new A();
//System.out.println(a.s);
a.f();
}
}

class A
{
private int i;
private String s;

public A()
{
    i = 123;
    s = "hello";
}   

public void f()
{
    A a = new A();
    System.out.println(a.i + a.s );
}

}
这个程序中一共创建了两个A类的对象,在类A的f()方法中创建的对象a,可以之间用a.i和a.s访问私有成员变量,而在main函数中创建的对象却不可如此使用,有点糊涂了,谁能帮忙解释下,谢了

1个回答

Saintyyu
Saintyyu   2015.08.12 15:26
已采纳

private的访问权限是本类,不是本对象

stven_king
stven_king 一直没有仔细的去想这一点,其实自己经常用~!
2 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
面试题:如何访问并修改一个类的私有属性?
有两种方法可以访问私有属性,一种是通过KVC获取,一种是通过runtime访问并修改私有属性。使用runtime可以获取到一个对象的所有成员变量,通过获取到的成员变量即可修改一个对象的私有属性。
java利用反射访问类的私有(private)属性及方法
java语言中,在一个类中,为了不让外界访问到有的属性和方法,通常将其设置为private,用正常的方式(对象名.属性名,对象名.方法名)将无法访问此属性与方法,但有没有其他方法可以访问呢?答案是有的,这就是java反射带来的便利。利用反射访问类的属性及方法如下 1.
Java反射机制,通过对象访问调用类的私有成员属性或者方法
Class是对类的抽象(每个类对应一份字节码)。一般情况下,比如A a = new A();直接通过a对象调用方法即可。但是在有些场景下,这样是做不到的,比如类名A是通过参数传递过来的,这时候你就无法通过new的方法创建对象,需要先加载这个类,获取Method对象,然后用Method已反射的形式调用相应的方法。
访问操作类私有属性和方法的两种方式
有些时候由于由于项目需要,我们在只知道类名和方法名的情况下需要去访问那个类的私有方法和属性。 下面是两者是在只知道类名的情况下去访问那个类私有变量和方法的例子:   1.通过内部类。(这种方式需要事先知道以后要被访问,故而设置成内部类的方式,不过这种方式用起来有点牵强,个人觉得)   例子: package com.jeelon.test1; /** * 内部类实现访问一个类
通过反射来获取私有的属性,方法~~
今天在面试的时候遇到一个非常nice的面试官,当时问到了如何通过反射来获取私有属性,          虽然本人之前也有做过,不过今天面试官一问顿时一脸懵逼,于是打算写这篇博客记录下来。先来看下我们的javaBean public class test1 { private String name; private int age; }    首先,我们要了解三个反
iOS开发中访问并修改一个类的私有属性
在OC中的类会有某些私有属性,这些属性通常写在.m文件中或在.h文件中用@private关键字进行修饰。某些类之所以有某些私有属性是因为不想这些属性被外界访问并修改。但我们仍能对私有属性进行访问和修改。访问以及修改私有属性有两种方式:KVC、runtime。 1.KVC 我们可以用setValue:的方法设置私有属性,并利用valueForKey:的方法访问私有属性。假设我们有一个类Perso
php中类外部访问类私有属性的方法
我们都知道,类的私有属性在类外部是不可访问的,包括子类中也是不可访问的。比如如下代码:    class Example1{      private $_prop = 'test';  }    $r = function(Example1 $e){      return $e->_prop;  };    $a = new Example1();  var_dump($r($a));
Java使用PropertyDescriptor获取实体类中私有属性的值,并给私有属性赋值
大家都知道Java类中的私有的(private)属性是获取不到的(即使使用继承依然获取不到),那如果非要获取私有属性的值怎么办呢?一般的做法是将该java类封装称为一个JavaBean,即封装该私有属性,提供一对共有的get,set方法来访问私有属性。一般情况下都会这样做!但遇到特殊情况呢?比如,先现有一个需求:访问一个Java类的私有属性,并且该类不提供访问该私有属性的共有方法!下面就为大家介绍
通过反射访问任意类的私有方法和属性
给出一个如下类: package test2; public class MathDemo {     private int m = 10;          private MathDemo(){              }          private int add(int a,int b){         return a+b;     }  
利用Java反射机制获得私有成员
1.Java对于一些类的封装使得私有属性无法在类外获得,但是java可以于运行时加载、探知、使用编译期间完全未知的classes,利用安全管理器及反射,可以在不修改源码 的基础上访问私有成员。 举例: //2.创建一个类Try1 package package1; public class Try1 { private int i=0; private String s=