标签:
在一个类的内部定义的类,称为内部类 内部类主要分类: 1. 实例内部类 2. 局部内部类 3. 静态内部类 实例内部类 : 1. 创建实例内部类,外部类的实例必须已经创建 2. 实例内部类会持有外部类的引用 3. 实例内部不能定义 static 成员,只能定义实例成员 静态内部类 匿名内部类
/* 内部类: 实例内部类(成员内部类) 1. 成员内部类可以等同看做成员变量 2. 成员内部类中不能有静态声明 3. 成员内部类可以访问外部类所有的数据 */ public class OuterClass{ // 静态变量 private static String s1 = "Ming"; // 成员变量 private String s2 = "keke"; // 静态方法 private static void m1(){ System.out.println("我是静态方法 !"); } // 成员方法 private void m2(){ System.out.println("我是成员方法 !"); } // 成员内部类,可以访问控制权限的修饰符修饰 // public private,protected,缺省 class InnerClass{ // 静态方法 // public static void m3(){} public void m4(){ // 静态的 System.out.println(s1); m1(); // 成员的 System.out.println(s2); m2(); } } // java入口 public static void main(String[] args){ // 创建外部类对象 OuterClass oc = new OuterClass(); InnerClass inner = oc.new InnerClass(); inner.m4(); } }
/* 关于静态内部类 1. 静态内部类可以等同看做静态变量 2. 内部类的重要的作用: 可以访问外部类中的私有的属性 3. 静态内部类可以直接访问外部类的静态数据,无法直接访问成员变量 */ public class OuterClass{ // 静态的成员变量 private static String s1 = "Ming"; // 成员变量 private String s2 = "keke"; // 静态方法 private static void m1(){ System.out.println("我是一个静态方法 !"); } // 成员方法 private void m2(){ System.out.println("我是一个成员方法"); } /* 静态内部类 可以用访问控制权限的修饰符修饰 public private,protected,缺省 */ static class InnerClass{ // 静态方法 public static void m3(){ System.out.println(s1); m1(); // 无法直接访问成员变量 // 成员的 //System.out.println(s2); //m2(); } // 成员方法 public void m4(){ // 静态的 System.out.println(s1); m1(); } } public static void main(String[] args){ // 执行m3()方法 OuterClass.InnerClass.m3(); // 执行m4()方法 InnerClass inner = new OuterClass.InnerClass(); inner.m4(); } }
/* 内部类: 局部内部类 等同于局部变量; 重点:局部内部类在访问局部变量的时候,局部变量必须使用final修饰 */ public class OuterClass{ // 方法 public void m1(){ // 局部变量 final int i = 100; // 局部内部类是不能访问控制权限修饰符修饰 class InnerClass{ // 内部类不能有静态声明 //public static void m1(){} // 成员方法 public void m2(){ System.out.println(i); } } // 调用m2 InnerClass ic = new InnerClass(); ic.m2(); } // java入口 public static void main(String[] args){ OuterClass oc = new OuterClass(); oc.m1(); } }
/* 匿名内部类:是指 类没有名字 */ public class Test{ // 静态方法 public static void arry(UserService u){ u.logout(); } public static void main(String[] args){ // 调用arry方法 // new UserServiceImpl(){} 这个就是匿名内部类 //arry(new UserServiceImpl()); arry(new UserService(){ public void logout(){ System.out.println("我要退出系统!"); } }); } } // 定义接口 interface UserService{ // 退出系统 void logout(); } //class UserServiceImpl implements UserService{ // void logout(){ // System.out.println("系统以安全退出 !"); // } //}
标签:
原文地址:http://www.cnblogs.com/Deng1185246160/p/4230712.html