如何在一个类中调用另一个类?

ssyuwn198001 2002-09-10 07:58:36
类一:
class Sphere
{
static final double PI=3.14;
static int count = 0;
double radius;
double xCenter;
double yCenter;
double zCenter;
Sphere (double theRadius,double x,double y,double z)
{
radius=theRadius;
xCenter=x;
yCenter=y;
zCenter=z;
}
static int getCount()
{
return count;
}
double volume()
{
return 4.0/3.0*PI*radius*radius*radius;
}
}
类二:调用类一。
class Create
{ public static void main(String[] args)
{
System.out.println("Number of objects="+Sphere.getCount());
Sphere ball = new Sphere (4.0,0.0,0.0,0.0);
System.out.println("Number of objects="+Sphere.getCount());
Sphere globe =new Sphere(12,1.0,1.0,1.0);
System.out.println("Number of objects="+ Sphere.getCount());
System.out.println("ball volume="+ball.volume());
System.out.println(" globe volume="+globe.volume());
}
}
编译出现不能解析Sphere;
...全文
417 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
aaboo 2002-09-11
  • 打赏
  • 举报
回复
如果A要调用到B,要么一起编译,要么加个-classpath参数,提供所使用类的路径
ssyuwn198001 2002-09-10
  • 打赏
  • 举报
回复
为什么需要一起编译可以(这种方法成功了)。能找到一个解决的办法吗?能解释一下理由吗?如果不这样应该如何作?
aaboo 2002-09-10
  • 打赏
  • 举报
回复
编译的时候一起编译

javac Sphere.java Create.java
litthree 2002-09-10
  • 打赏
  • 举报
回复
如果不是环境变量的问题的话,你只要把两个类放在原来的地方就可以了
即classpath 下
litthree 2002-09-10
  • 打赏
  • 举报
回复
另外,要访问到Sphere的成员,还要看其成员的访问权限。
在上面的例子中,所有的成员都是default,说明只有同一包中的类才可访问,那么,即使声明Sphere为public ,但如果Create在其他包中的话,也是访问不到Sphere的成员的。
ssyuwn198001 2002-09-10
  • 打赏
  • 举报
回复
为什么在我的机子上不行。我已经放在同一个目录中(java),然后取名为
create.java和 Sphere.java
但是仍然不行!
litthree 2002-09-10
  • 打赏
  • 举报
回复
之所以访问不到Sphere,是因为访问权限的问题:在类Greate中,我们试图访问类Sphere,但后者的权限是default,那就意味着只能在同一包中的类才能访问它。解决的方法有两个:一是声明Shpere为public ,二是把两个类放在同一
个目录中。你同意我的说法吗?
namowen 2002-09-10
  • 打赏
  • 举报
回复
加到同一个package中,并放到与该package同名的目录下。
wjmmml 2002-09-10
  • 打赏
  • 举报
回复
如果不存为一个文件,那么就把这个两个文件放在同一个目录下,就可以。
wjmmml 2002-09-10
  • 打赏
  • 举报
回复
class Sphere
{
static final double PI=3.14;
static int count = 0;
double radius;
double xCenter;
double yCenter;
double zCenter;
Sphere (double theRadius,double x,double y,double z)
{
radius=theRadius;
xCenter=x;
yCenter=y;
zCenter=z;
}
static int getCount()
{
return count;
}
double volume()
{
return 4.0/3.0*PI*radius*radius*radius;
}
}
class Create
{
public static void main(String[] args)
{
System.out.println("Number of objects="+Sphere.getCount());
Sphere ball = new Sphere (4.0,0.0,0.0,0.0);
System.out.println("Number of objects="+Sphere.getCount());
Sphere globe =new Sphere(12,1.0,1.0,1.0);
System.out.println("Number of objects="+ Sphere.getCount());
System.out.println("ball volume="+ball.volume());
System.out.println(" globe volume="+globe.volume());
}
}

我测试了,你把着两个放到一个文件里面,文件名存为Create.java.
是没有问题的
superszhu 2002-09-10
  • 打赏
  • 举报
回复
你是不是把它们放在同一个目录下了?
我运行这两个程序没有问题;
结果如下:

Number of objects=0
Number of objects=0
Number of objects=0
ball volume=267.94666666666666
globe volume=7234.559999999999

62,614

社区成员

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

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