Java私有实例变量的问题

来源:百度知道 编辑:UC知道 时间:2024/07/01 08:14:38
大家看我下面这个例子,我在add方法和main方法中都直接用对象名.私有实例变量名的方式引用了私有实例变量,但是ECLIPSE也没有报错,运行也可以,这是为什么呢?是不是说在这个类的内部就能引用这个类的对象的私有实例变量?
public class Rational {
private int numerator,denominator;
public Rational(){
numerator=0;
denominator=1;
}
public Rational(int a,int b){
if(b<=0){
System.out.println("b cannot be zero");
}else{
predigest(a,b);
}

}
private void predigest(int a,int b){
for(int i=b/2;i>=1;i--){
if(a%i==0&&b%i==0){
numerator=a/i;
denominator=b/i;
break;
}
}
}
public Rational add(Rational num){
int a,b;
a=numerator*num.denominator+num.numerator*denominator;
b=denominator*num.denominator;
return new Rational(a,b);
}
public String toString(){
return numerator+"/"+denominator;
}
public static void main(String[] args){

所谓私有private么,就是指在自身类中能被直接使用而在别的类中无法使用,只要声明了private,即使在他的继承内中都不能使用。

你这里之所以都能用是因为你所有能用的都是在你自身的Rational类里,如果你在Rational类外又建了一个类,你的num2.numerator 就不能用了。

在类内部,本身就是跟add方法和main方法一体的,为啥不能用。。。类是一个整体。。就像一个人的身体一样,add方法和私有变量都是身体的一部分。是相互协调工作的。。

你重新新建一个类,在那个main方法里再试试看看可能再行!

你现在还是在同一个类中

你的手是你自己的,当然你自己能灵活控制调用。如果你的手听别人的大脑指挥,那就不是你自己的手了。 明白了么?