刚从C++转到Java没几天,遇到一个比较菜的问题,不想再浪费时间翻书了,就想请教各位大侠:
    MyEclipse 7.5环境下,建立一个工程TestSimpleCircle,里面只有一个类文件TestSimpleCircle.java,代码如下:public class TestSimpleCircle {
  public static void main(String[] args){
    SimpleCircle myCircle = new SimpleCircle(5.0);
    System.out.println("The area of the circle of radius " + myCircle.radius + " is " + myCircle.findArea());

    SimpleCircle yourCircle = new SimpleCircle();
    System.out.println(" The area of the circle of radius " + yourCircle.radius + " is " + yourCircle.findArea());

    yourCircle.radius = 100;//为何外部函数可以给对象的私有变量radius赋值?难道是主函数main可以?
    System.out.println("The area of the circle of radius " + yourCircle.radius + " is " + yourCircle.findArea());
}
}class SimpleCircle{

  double radius; // 此变量访问控制类型应该是默认的private

  SimpleCircle(){
     radius = 1.0;
  }

  SimpleCircle(double newRadius){
    radius = newRadius;
  }

  double findArea(){
    return radius * radius * Math.PI ;
  }
}以上程序Build,没有问题。
疑问:
是否真的main函数有什么特权,可以访问类对象的私有变量,于是想测试一下,中类文件TestSimpleCircle.java中,再写一个类Test:
// ...前面代码同上
class Test{
    SimpleCircle a; 
    a.radius = 2.0;
    
    SimpleCircle b = new SimpleCircle();
    b.radius = 2.0;
}奇怪了,这四行代码都有错误。系统提示说:Syntax error on token "radius",varableDeclactorID expected after this token.
怎么回事啊?请各位高手指点一二。
另外,Java里面的Static关键字到底是干什么的啊?

解决方案 »

  1.   

    1.Java里默认的是包访问级别,即,同一个包里的类都可以访问。
    2.SimpleCircle a;
      a.radius = 2.0; 
    除了声明的时候可以赋值,例如int a = 10;
    其他的都必须放在某个方法里,例如构造方法。
      

  2.   

    double radius; // 此变量访问控制类型应该是默认的private 
    默认的不是private,这个变量访问控制类型是default
    在同一个包内的其他类都能够访问到
      

  3.   

    Static;这个是静态方法的意思。