关于java中static的问题,请高手指教
publicclassgradeBookTest{staticclassgradeBook{publicvoidprint(){System.out.println("h...
public class gradeBookTest{
static class gradeBook{
public void print(){
System.out.println("hi");
}
}
public static void main(String[]args){
gradeBook a=new gradeBook();
a.print();
}
}
为什么这个程序可以执行?在类前加static不就是说这个类是静态的,不能实例化吗?可gradeBook a=new gradeBook();将这个类实例化后,为什么还正确?错在哪里呢? 展开
static class gradeBook{
public void print(){
System.out.println("hi");
}
}
public static void main(String[]args){
gradeBook a=new gradeBook();
a.print();
}
}
为什么这个程序可以执行?在类前加static不就是说这个类是静态的,不能实例化吗?可gradeBook a=new gradeBook();将这个类实例化后,为什么还正确?错在哪里呢? 展开
展开全部
不能实例化是加abstract, 与static无关.
内部类才有加不加static的问题.
单纯的内部类应加static.
内部类若不加static,就会额外增添一个隐藏的栏位,它在new的时候会指向外包的object.
举例来说:
class A {
public int x;
class B {
B() { x++; }
}
}
class Test {
public static void main(String[] _) {
A a1=new A(); a1.x=2;
A a2=new A(); a2.x=5;
A.B b1=a1.new B();
A.B b2=a2.new B();
System.out.println(a1.x+", "+a2.x) ;
}
}
执行时会印出3, 6.
内部类才有加不加static的问题.
单纯的内部类应加static.
内部类若不加static,就会额外增添一个隐藏的栏位,它在new的时候会指向外包的object.
举例来说:
class A {
public int x;
class B {
B() { x++; }
}
}
class Test {
public static void main(String[] _) {
A a1=new A(); a1.x=2;
A a2=new A(); a2.x=5;
A.B b1=a1.new B();
A.B b2=a2.new B();
System.out.println(a1.x+", "+a2.x) ;
}
}
执行时会印出3, 6.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2008-02-28
展开全部
这种情况叫做静态内部类,用于内部类不需要引用外围类对象的情况下。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询