zoukankan      html  css  js  c++  java
  • java基础随笔-内部类

           今天来复习下内部类的一些基础知识。

              首先是内部类的分类:

                           1、成员内部类

                           2、静态内部类

                           3、匿名内部类

                           4、局部内部类

              下面逐一来介绍下。

                          首先是成员内部类,就是将内部类作为一个成员变量来处理。具体例子如下:

    public class ChengYuanInnerClass {
    
         private int num=3;
         
         class InnerClass{
             
             private int num=4;
             
             public void test(){
                 int num =5;
                 System.out.println("test.num="+num);
                 System.out.println("innerclass.num="+this.num);
                 System.out.println("ChengYuanInnerClass.num="+ChengYuanInnerClass.this.num);
             }
         }
         
         public static void main(String[] args) {
            ChengYuanInnerClass.InnerClass innerClass = new ChengYuanInnerClass().new InnerClass();
            innerClass.test();
        }
    }

    结果:

    test.num=5
    innerclass.num=4
    ChengYuanInnerClass.num=3

                              静态内部类是指作为一个静态类放置在某个类内部。

    public class StaticInnerClass {
    
         private static int num =3;
         
         static class InnerClass{
             private static int num =4;
             
             public static void test(){
                int num = 5;
                 System.out.println("test.num="+num);
                 System.out.println("innerClass.num="+InnerClass.num);
                 System.out.println("StaticInnerClass.num="+StaticInnerClass.num);
                 //static是在类还没有调用构造参数实例化类之前就已经被执行,所以this这个是不正确的。
             }
         }
         
         public static void main(String[] args) {
             StaticInnerClass.InnerClass.test();
        }
    }

    结果:

    test.num=5
    innerClass.num=4
    StaticInnerClass.num=3

                   3、匿名内部类:是针对某个接口只有一个方法时,我们为了方面代码的编写,直接new该接口实现其内部的这个唯一方法。

    public class NiMingInnerClass {
    
         public static void main(String[] args) {
            String[] fileNames = new File("/Users/test").list(new FilenameFilter() {
                
                @Override
                public boolean accept(File dir, String name) {
                    return name.endsWith("txt");
                }
            });
            if(null!= fileNames && fileNames.length!=0){
                for(String filename : fileNames){
                    System.out.println(filename);
                }
            }
        }
    }

           

  • 相关阅读:
    写了一个数据库的连继ID号(格式:xxxx000001)
    热心的网友<寒羽枫>帮忙解决水晶报表打印纸张问题
    解决vs2005自带水晶报表次数的限制的次数
    WebWork教程 Interceptor(拦截器)
    由于最近网站内容需要更新的还是满多的,于是想开发一个采集系统。收集了一下资料。
    ASP.NET AJAX 1.0 Beta 2 发布
    水晶报表的显示与打印不一至问题
    去年治疗过敏性鼻炎所用的药。
    正则表达式快速入门教程
    sql复制一条相同的记录最快最好的办法。
  • 原文地址:https://www.cnblogs.com/jiligalaer/p/5381611.html
Copyright © 2011-2022 走看看