java中的内部类
2015-06-12 13:21
344 查看
内部类的作用是:可以访问外部类中的私有数据
成员内部类:
成员内部类可以等同的看做是成员变量。
成员内部类不能有静态声明。
成员内部类可以访问外部类的所有的数据。
成员内部类:
成员内部类可以等同的看做是成员变量。
成员内部类不能有静态声明。
成员内部类可以访问外部类的所有的数据。
public class OuterClass{ //静态变量 private static String s1 = "A"; //成员变量 private String s2 = "B"; //静态方法 private static void m1(){ System.out.println("static's m1 method execute!"); } //成员方法 private void m2(){ System.out.println("m2 method execute!"); } //成员内部类 //可以用访问控制权限的修饰符修饰。 //public,protected,private,缺省 class InnerClass{ //静态方法 //public static void m3(){} //成员方法 public void m4(){ System.out.println(s1); m1(); System.out.println(s2); m2(); } } //入口 public static void main(String[] args){ //创建外部类对象 OuterClass oc = new OuterClass(); InnerClass inner = oc.new InnerClass();//注意成员内部类的访问方式 inner.m4(); } } 静态内部类:可以看做是静态变量 ,可以访问外部类的静态数据,无法直接访问成员。 public class OuterClass{ //静态变量 private static String s1 = "A"; //成员变量 private String s2 = "B"; //静态方法 private static void m1(){ System.out.println("static's m1 method execute!"); } //成员方法 private void m2(){ System.out.println("m2 method execute!"); } //静态内部类 //可以用访问控制权限的修饰符修饰。 //public,protected,private,缺省 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(); //System.out.println(s2); //m2();//不能访问外部类的成员方法和成员变量。 } } //入口 public static void main(String[] args){ //执行m3 OuterClass.InnerClass.m3(); //执行m4 InnerClass inner = new OuterClass.InnerClass();//创建静态内部类的对象 inner.m4(); } } 局部内部类: 局部内部类相当于局部变量,局部内部类在访问局部变量的时候必须用final修饰; (jdk1.8中的新特性好像是取消了)。 public class OuterClass{ //方法 public void m1(){ //局部变量 final int i = 10;//为什么用final修饰? //局部内部类 //局部内部类不能用访问控制权限修饰符修饰。 class InnerClass{ //内部类不能有静态声明 //public static void m1(){} //成员方法 public void m2(){ System.out.println(i); // 10 } } //调用m2 InnerClass inner = new InnerClass(); inner.m2();//怎么样使用m2方法。 } //入口 public static void main(String[] args){ OuterClass oc = new OuterClass(); oc.m1(); } 匿名内部类: /* 匿名内部类:指的是类没有名字. */ public class Test{ //静态方法 public static void t(CustomerService cs){ cs.logout(); } //入口 public static void main(String[] args){ //调用t方法 //t(new CustomerServiceImpl()); //使用匿名内部类的方式执行t方法 //整个这个"new CustomerService(){}"就是个匿名内部类 t(new CustomerService(){ public void logout(){ System.out.println("exit!"); } }); //匿名内部类的优点:少定义一个类. //缺点:无法重复使用! } } //接口 interface CustomerService{ //退出系统 void logout(); } //编写一个类实现CustomerService接口 /* class CustomerServiceImpl implements CustomerService{ public void logout(){ System.out.println("系统已经安全退出!"); } } */本文出自 “gaogaozi” 博客,请务必保留此出处http://hangtiangazi.blog.51cto.com/8584103/1661202
相关文章推荐
- java中volatile关键字的含义
- Java实现图片裁剪缩放
- 第二十七篇 Java中 继 承 的一些另类思想。。。
- eclipse for php的XDebug设置方法
- spring异常
- javax.faces.view.facelets.ResourceResolver
- [5] MQTT,mosquitto,Eclipse Paho---MQTT消息格式分析概述
- extjs3.4+struts2上传文件却弹出下载框,下载的文件内容为json 返回的值的问题
- Eclipse debug 时要求 Edit Source Lookup Path 添加被调试项目的解决方案
- Intellij IDEA设置忽略部分类编译错误
- 自定义字节缓冲区用于文件复制
- java 使用xpath解析xml和html
- java 操作excel
- 在Spring3中使用注解(@Scheduled)创建计划任务源码
- eclipse左侧的导航栏不见了怎么调
- (Java实现)HTML页面转PDF解决方案
- RxJava使用介绍
- java实现任意进制的互相转换
- Spring mvc+hibernate+freemarker(开源项目)
- Java项目如何记录日志