成员内部类
【四种修饰符都可以】
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);
}
}
}
方法内部类