成员内部类
四种修饰符都可以
public class Member {
static String x = "?"; static int i = 0; public void fun() {
System.out.println(x); System.out.println( i); A a = new A();////生成内部类对象 System.out.println(a.num); } ///成员内部类-如果修改方法是private私有内部类 class A {
private int num = 1; public void fun() {
System.out.println(x);///直接访问外部属性 System.out.println(num);///直接访问这类属性 ///访问外部类,因为外部类在产生内部类之前已经产生,所以可以直接访问 System.out.println(Member.this); Member.this.fun()
System.out.println(this);
}
}
}
class test {
public static void main(String[] args) {
//产生内部类对象方式二,此法仅能在成员内部类不是private修饰才行
Member.A a = new Member().new A();
a.fun();
}
}
静态内部类
public class Static {
private static String staticMsg = "Method静态私有属性";
private String msg = "外部类成员私有属性";
static class M{
//静态内部类可以有自己的成员域
static String mgs ="静态内部类的静态成员属性";
int num =1;
public void fun(){
//静态内部类只能访问外部类的静态域
System.out.println(staticMsg);
//要访问外部类成员属性只能通过创建其对象
Static s =new Static();
System.out.println(s.msg);
}
}
}
方法内部类