我希望更好地了解如何在java中引用对象。鉴于此代码将引发错误“错误:非静态变量,这不能从静态上下文引用”:
public class Catalog {
public class Student {
public String name;
...
}
//Student
public static void main (String[] args){
Student s;
s = new Student();
}//main
Q1:如果在另一个文件“Student.java”中定义了类Student,为什么它可以工作?
如果我想将Student类定义保留在与main子例程相同的文件中,则帖子“Non-static variable cannot be referenced from a static context”上的解决方法是:
public class Catalog {
public class Student {
public String name;
...
}
public static void main (String[] args){
oopExample prg;
prg = new oopExample();
prg.run();
}//main
Student std1;
public void run(){
std1 = new Student();
std1.name = "Tobby";
}
}//oopExample
问题2:在我在单独的文件中使用Student类定义的情况下,您是否能从程序执行的角度告诉我这是否类似?
问题3:将学生声称为静态会有什么缺点?并简单地使用以下代码:
public class Catalog {
public static class Student {
public String name;
...
}//Student
public static void main (String[] args){
Student s;
s = new Student();
}//main
感谢您的时间,
答案 0 :(得分:0)
Q1 :如果在另一个文件“Student.java”中定义了类Student,为什么它会起作用?
因为单独文件中的(唯一)类是隐式static
。
Q2 :在我在单独的文件中使用Student类定义的情况下,您是否能从程序执行的角度告诉我这是否类似?
从程序执行的角度来看,无关紧要(只要你不能从班级Catalog
访问班级Student
中的某些东西(你不应该这样做,除非你有充分的理由......)
Q3 :将学生声称为静态会有什么缺点?并简单地使用以下代码:
类Student
的对象无法访问未声明Catalog
的类static
的属性。
但是,无论如何,这是你应该小心谨慎的事情。