Java中为静态内部类不能被new呢?
3个回答
展开全部
静态内部类,可以被new取决于你的静态类里面的方法:
得了我给你总结下,这确实有点绕口令,也当我复习一下:总结的不好还请指点!
public class TestStatic {
public static void main(String[] args) {
//1.静态内部类,静态方法!
Test05.StaticClass.show();
//new Test05.StaticClass().show();
//被注释的这里其实是合法的,只是有点多余,你看完整个在回头看这里,这与调用静态方法有违背!
//2.非静态内部类,非静态方法!
new Test06().new StaticClass().show();
//3.静态内部类,非静态方法!
new Test07.StaticClass().show();
//4.本类中的静态内部类,此时他只是一个自己的成员与3相比一下!
new TestStatic.StaticClass().show();
//5:局部匿名内部类!
show();
/*总结一下:你知道,静态方法被访问的时候,只需要: [类名.静态方法] 就可以被访问!
情况1.不用new,就可以访问!
情况2.都是非静态.所以都的new
情况3:为什么要new,是因为你的方法是非静态的,如果是静态,就如同情况1;
情况4:与3是一样!
情况5:属于匿名内部类,在方法里面的!
情况6:就是情况1被注释的部分,它就等价,new了一个静态类,静态类也可以被new只是有点多余,因为他已经存在了!*/
}//情况4:
static class StaticClass{
void show() {
System.out.println("成员属性静态内部类!");
}
}//情况5:
static void show() {
new Object(){
void show() {
System.out.println("局部内部类!");
}
}.show();
}
}//情况1:
class Test05{
static class StaticClass{//静态类!
static void show() {//静态类中的静态方法!
System.out.println("静态内部类,静态方法!");
}
}
}//情况2:
class Test06{
class StaticClass{//非静态类
void show() {//非静态方法!
System.out.println("非静态内部类,非静态方法!");
}
}
}//情况3:
class Test07{
static class StaticClass{//静态类!
void show() {//静态类中的非静态方法!
System.out.println("静态内部类,非静态方法!");
}
}
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询