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 );
}
}
为啥f()中创建的对象能直接使用使用a.i和a.s,私有还能这么用?在main函数中这么做却不行? --------------------编程问答-------------------- private:private表示私有,私有的意思就是除了class自己之外,任何人都不可以直接使用,即便是子女或朋友都不可以使用。f()可以调用a.i 是处在同一个class中,main方法到另一个class中了,故不能调用到。将main方法写在同private变量定义的同一个类中就可以通过.变量名来访问了 --------------------编程问答-------------------- 私有变量即自己拥有访问权,自己类体内都可以访问,void f()是本身的方法 当然可以进行访问,如果自己的方法都不能访问的话,试问定义这么个都不能访问的变量有什么意义呢? --------------------编程问答-------------------- 私有就是 自己class内部的可以访问 --------------------编程问答-------------------- f()在同一个类中,私有变量在类外部是不可以访问的,除非使用反射 --------------------编程问答-------------------- 如果在别的类里面还能够访问,那private还有何意义,但是如果在自己类里面都不能访问的话,那private就更加没有意义了。 --------------------编程问答-------------------- 简单问题 好好看书 --------------------编程问答--------------------
private 意思是只有本类成员才能访问!f()方法和那几个私有变量都是在一个类中的,当然可以访问了!
还有就是main方法,你的main方法因为在其他方法中了,是无权访问类A中的私有变量的!
如果你在类A中也定义了main方法,还是访问不到私有变量,这是因为main方法是静态方法,不能访问非静态成员变量和非静态方法的! --------------------编程问答-------------------- 用一个图来说private,我想聪明的你能够理解吧。
--------------------编程问答-------------------- 请看private,public修饰变量的区别 --------------------编程问答-------------------- 打个比方。你自己的钱你自己不能用么?如果别人能用,那还算你自己私有的么? --------------------编程问答-------------------- --------------------编程问答-------------------- 你把main函数放在class A中也是可以访问的,private:只对这个类可见。你在其它的类中除了用反射,没法访问私有成员变量 --------------------编程问答-------------------- 你这是在类内部访问私有成员呀,如果你在main函数中直接调用A类的私有成员的话,那就不行了 --------------------编程问答--------------------
+1 --------------------编程问答-------------------- 私有是在本类中可以访问 你在A类中定义私有 那么A类中的方法是可以直接访问的
但是在其他类中不可以访问
补充:Java , Java SE