关于Java中用static声明的方法的疑问

来源:百度知道 编辑:UC知道 时间:2024/06/14 17:38:33
比如有段程序
1.public class TestClass{
2. int x;
3. int y;
4. static void showtest(TestClass tc){
5. System.out.println(tc.x+" "+tc.y);
6. }
7. void seeit(){
8. showtest(this);
9. }
10. public static void main(String[] args){
11. TestClass p=new TestClass();
12. p.x=9;
13. p.y=10;
14. p.seeit();
15. }
16.}
如果把第5行tc.删掉,不管程序如何,首先编译就会出错,然后再去掉static的话,编译又通过了,这个怎么解释

/*静态方法里面不能访问本类的非静态方法和非静态域.
原因:
静态方法和静态域属类所有.只能ClassName.XXX这样访问.

例如:
*/
class Dog
{
public final static String PHYLUM="Vertebrate";
private int age=0;
pvivate String masterName="";

public static void bark()
{
System.out.println("旺旺旺");
}
public void showAge()
{
System.out.println("Age:"+this.getAge());
}
public void setAge(int age)
{
this.age=age;
}
public int getAge()
{
return this.age;
}
public void setMasterName(String masterName)
{
this.masterName=masterName;
}
public String getMasterName()
{
return this.masterName;
}
}

Dog dog1=new Dog();
dog1.setAge(5);
dog1.setMasterName("chinarensp");
/*