package com.itheima;
public class InnerClassDemo {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
//如果成员内部类没有被static修饰,那么换句话来说,它就是外部类的成员,就是属于类级别,
//所以在访问它的时候,就必须创建一个外部类的引用。new InnerClass().new MemberClass();
InnerClass.MemberClass ms = new InnerClass.MemberClass("MemberClass");
ms.showName();
/*
* 内部类对象的生命周期会超过局部变量的生命期。
* 局部变量的生命期:当该方法被调用时,该方法中的局部变量在栈中被创建,当方法调用结束时,退栈,这些局部变量全部死亡。
* 而内部类对象生命期,与其它类一样,当创建一个局部内部类对象后,只有当没有其它人再引用它时,它才能死亡。
* 所以完全可能一个方法已调用结束(局部变量已死亡),但该局部类的对象仍然活着。即:局部类的对象生命期会超过局部变量。
* 方法内部类只能在定义该内部类的方法内实例化,不可以在此方法外对其实例化。此处用父类的对象访问方法。
*/
InnerClass inner = new InnerClass("InnerClass");
inner.showHelp();
}
}
class InnerClass{
private String className;
public InnerClass(String className){
this.className = className;
}
public String getClassName() {
return className;
}
public void setClassName(String className) {
this.className = className;
}
public void showName(){
System.out.println(this.className);
}
/**
* create innner class
*/
public static class MemberClass{
private String className;
public MemberClass(String name){
this.className = name;
}
public void showName(){
System.out.println(this.className);
}
}
public void showHelp(){
class PartClass{
int age;
public void showLocation(){
System.out.println("局部内部类" + this.age + InnerClass.this.className);
}
}
new PartClass().showLocation();
}
}
请解释局部内部类和成员内部类都可以被static修饰吗,原因是什么?
最新推荐文章于 2024-08-29 09:16:12 发布