类中的方法当然能访问自己类的数据成员了。
例子:
class test{
private int data;
public int getDate()
{
return data;
}
}
只不过你的方法特殊一点,但是还是这个道理
例子:
class test{
private int data;
public int getDate()
{
return data;
}
}
只不过你的方法特殊一点,但是还是这个道理
private int data;
public A(int i)
{
data=i;
}
};
void main()
{
A a=new A();
a.i=1;
}
private int data;
public A(int i)
{
data=i;
}
};
void main()
{
A a=new A(9);
a.i=1;
}
class A{
private int data=1; public static void main(String[] args){
A a=new A();
System.out.println(""+a.data);
}
}
里面,public static void main(String[] args)这个方法不是属于类A的吗?
虽然MAIN是一个静态的主函数,默认直接运行,但还是CLASS A中的一个方法啊,
所以当然可以访问自己的私有变量了。一定要注意,这里MAIN不是独立存在的,它属于CLASS A。C++和JAVA没有可比性,要是2个都一样,那干嘛一个叫JAVA一个叫C++?都叫JAVA或者C++或者A++多干脆?
private int data;
public A(int i)
{
data=i;
}
};
void main()
{
A a=new A(9);
a.data=1;
}
函数也不例外。不过main()方法是个特殊的成员函数,它既是java程序的入口(在这一点上和
C++程序类似 注意:只是类似),又必需以某个类的成员函数的形式出现。作为该类的成员函数,它当然可以调用该类的任何成员变量及成员函数。
C++语言不是纯脆的面象对象语言,它也有面向过程的部分。它的main()函数不属于任何一个类。所以在C++中main()函数不能调用任何类的私有成员和保护成员。
你用java写的main是在类的里面
是因为这个区别
类中的方法能访问自己类的private数据成员。
{
private int data=1;
public A changeData()
{
A a=new A();
a.data=0;
return a;
}
}
class B
{
public static void main(String[] args)
{
A b=new A();
A a=b.changData();
}
}这样不是用对象b的直接改变了对象a的private
照你的理论,私有变量不如谁都不让访问好了。
关键你没有理解这么做的原理,有时间好好看书的好。
简单的给你说下你的例子,
比如,你现在是通过A a=b.changData();来使 a的内部的私有变量值变成了0,
但是你想过没有,无论你外部怎么调用b.changData(),它只是表明了一个动作,
而这个时候,你是可以根据需要随时改变
public A changeData()
{
A a=new A();
a.data=0;
return a;
}
这个方法的,比如:
public A changeData()
{
A a=new A();
a.data=100000;
return a;
}
怎么样,我改了私有变量的初始化值,而外部任何类都不知道这件事发生了。
而且我还可以写其它方法:
public void init() {
data=0;
}
而有一天,我在重构程序过程中发现,可以把 data这个私有变量去掉了,用不着它了,
这个时候我只要改我A这个类就可以了,不会影响到B,因为B根本不知道有data这个变量存在。这个就是最简单的所谓封装性。
罗嗦了一堆,其实任何一本入门书都有讲更清楚的吧,建议学学。
自己得方法当然可以访问自己得变量
“这样不是用对象b的直接改变了对象a的private“
但是我觉得你最后还是用A的方法,改变了A的private。
private也是对类而言的,不是对对象。
相当于有复制了一个b.
你说的情况是在多个类调用的情况.
class a{
public static void main(String[] args){
B b;
System.out.print(b.data);
}
}
public class b{
private data;
}
中关于Java语言object access方面的章节