调用内部类的某个方法,需要用new关键字创建外部类,然后在通过外部类去调用内部类。
代码如下:
public class OuterInnerClass {
private String name;
private String age;
class innerClass{
innerClass(){
System.out.println("oox");
};
}
public innerClass ooxx(){
return new innerClass();
}
public static void main(String[] args) {
OuterInnerClass out = new OuterInnerClass();
OuterInnerClass.innerClass in = out.ooxx();
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
}
突然好奇如何调用内部类的某个属性:
public class OuterInnerClass {
private String name;
private String age;
class innerClass{
private String innername="test";
innerClass(){
System.out.println("oox"+this.innername);
}
public String getInnername() {
return innername;
}
public void setInnername(String innername) {
this.innername = innername;
};
}
public innerClass ooxx(){
return new innerClass();
}
public static void main(String[] args) {
OuterInnerClass out = new OuterInnerClass();
OuterInnerClass.innerClass in = out.ooxx();
in.setInnername("mixian");
System.out.println(in.getInnername());
//OuterInnerClass out1 = OuterInnerClass.innerClasss();
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
}
结果为:ooxtest mixian
或者:OuterInnerClass outer = new OuterInnerClass();
OuterInnerClass.innerClass inner = out.new innerClass();初始化结果是一样的
ps说明:
师傅说:内部类可以声明为static的,但此时就不能再使用外部类的非static的成员变量和非static的成员方法;
非static的内部类中的成员不能声明为static的,只有在层类或static的内部类中才可声明static成员
非static的内部类中的成员不能声明为static的,只有在层类或static的内部类中才可声明static成员
理解:
也就是说内部类和外部类,在变量和方法的调用的时候,必须都是static 或者是非static
ps:
内部类定义为静态的可以声明静态的变量,
一个非静态的内部类不可以声明静态变量。
静态内部类里面不可以应用外部的非静态变量