问一个比较菜的问题,有点晕...

mdc630 2009-08-17 11:32:15
刚从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关键字到底是干什么的啊?
...全文
121 6 打赏 收藏 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
musecangying007 2009-08-17
  • 打赏
  • 举报
回复
pingchangxinli 2009-08-17
  • 打赏
  • 举报
回复
[Quote=引用楼主 mdc630 的回复:]
刚从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关键字到底是干什么的啊?
[/Quote]
同意一楼
dadi5566 2009-08-17
  • 打赏
  • 举报
回复
路过,顶一下
霜之哀伤 2009-08-17
  • 打赏
  • 举报
回复
1.Java里默认的是包访问级别,即,同一个包里的类都可以访问。
2.SimpleCircle a;
a.radius = 2.0;
除了声明的时候可以赋值,例如int a = 10;
其他的都必须放在某个方法里,例如构造方法。
liangwansheng 2009-08-17
  • 打赏
  • 举报
回复
Static;这个是静态方法的意思。
java1109 2009-08-17
  • 打赏
  • 举报
回复
double radius; // 此变量访问控制类型应该是默认的private
默认的不是private,这个变量访问控制类型是default
在同一个包内的其他类都能够访问到

62,620

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧