外部类调用非静态内部类中的方法:
public class OuterClass{
public class InnerClass{
public void print(){
System.out.println("this a innerclass");
}
}
public void fun(){
new InnerClass().print();
}
public static void main(String[] args){
OuterClass.InnerClass p = new OuterClass().new InnerClass();
p.print();
new OuterClass().fun();
System.out.println("this is a outerclass");
}
}
外部类调用静态内部类中的非静态方法:
public class OuterClass{
public static class InnerClass{
public InnerClass(){
System.out.println("this is a innerclass");
}
public void print(String str){
System.out.println(str);
}
}
public static void main(String ages[]){
OuterClass.InnerClass ci = new OuterClass.InnerClass();
ci.print("this is a string");
}
}
外部类调用静态内部类中的静态方法:
public class OuterClass{
public static class InnerClass{
public static void print(String str){
System.out.println(str);
}
}
public void fun(String str){
InnerClass.print(str);
}
public static void main(String[] args){
InnerClass.print("this is a string");
new OuterClass().fun("this is a another string");
}
}
总结:
在一个类中可以声明一个类或接口。
在一个接口中可以声明一个类或接口。
在一个方法中可以声明一个类(局部内部类)。
普通类不能声明为static,而内部类可以声明为static(静态内部类)。
静态内部类可以有静态成员和非静态成员,而非静态内部类则不能有静态成员。
静态内部类的成员可以访问外部类的静态变量,而不可访问外部类的非静态变量。
非静态内部类的成员可以访问外部类的非静态变量。
|