我在学习java时遇到的几个问题,望大家解答
一、
关于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?