我在学习java时遇到的几个问题,望大家解答

fengyang 2002-04-12 04:52:00
一、
关于static
有一例子,如下
import java.io.*;
public class StaticMethodSample{
int x;//非static类型
static void staticMethod(){
System.out.println(x);
}
}
书上说编译不通过,因为static 类型的method只能使用和存取同为static 类型的数据成员,如果把上面的x定义成static int x就可以了。

在同一章节书上还有一个例子,如下:
//存储文件名为CallbyWhatSample.java
import java.io.*;
class SampleClass{
public int DM=1000;
}

public class CallByWhatSample{
public static void ChangePara(int x,SampleClass y){
y.DM=2000;
x=1999;
}
public static void main(String args[]){
int x=0;
SampleClass y=new SampleClass();
System.out.println("x:"+x+",y"+y.DM);
ChangePara(x,y);
System.out,println("x:"+x+".y"+y.DM);
}
}
让我不明白的是, ChangePara也是static类型,不是用到了非static类型x吗?
main也是static类型,不是也用到了x吗?程序还是可以执行的!


二、问题2
在上一个问题中的第二个程序,一个文件里有两个class,这两个class虽然在一个文件里,但是不是与在同一个package里的分别在两个文件里的class关系一样?

三、问题三
class1是另一各 package中class2的子类,问class1是否可以使用class2中的protected类型的数据和method?
...全文
127 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
chorls 2002-04-14
  • 打赏
  • 举报
回复
留着待看
马行空牛耕田 2002-04-12
  • 打赏
  • 举报
回复
千万注意区别“方法变量”和“方法参数”——静态方法只能使用同为静态的变量,注意这个变量是方法“定义”时使用的,是成员变量;而方法参数则是在方法被“调用”(使用)时,传递给方法的! :) 一个是定义,一个是使用!OK?

其他同意楼上!
jcky7907 2002-04-12
  • 打赏
  • 举报
回复
一、用static定义的方法只能引用类变量(static),不能引用对象变量。
在你的程序里的main和ChangePara的方法用的是局部变量,main的x是局部的而ChangePara内的参数是传进来的,而实参是不变的。
二、是的。
三、子类是由父类派生的能够引用父的protected。
James_ZC 2002-04-12
  • 打赏
  • 举报
回复
同意楼上
guxianxian 2002-04-12
  • 打赏
  • 举报
回复
1.main中的x是方法内的变量,可以用
3.class1是另一各 package中class2的子类,class1可以使用class2中的protected类型的数据和method
kkhui 2002-04-12
  • 打赏
  • 举报
回复
一, x不是非static类型的

引用你的话:
为static 类型的method只能使用和存取同为static 类型的数据成员

指的是<成员变量>,ChangePara那个x只是局部变量

二、是同一package的
三、可以

62,616

社区成员

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

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