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);
                }
            }
        }
    }

           

  • 相关阅读:
    [转] 献给所有正在找路的人
    在同一表单内,多个提交按钮的处理方式
    javascript高级选择器querySelector和querySelectorAll
    一位年轻女董事长的37条忠告很受启发吧?
    函数的延迟加载
    WCF的CommunicationObjectFaultedException异常问题
    WCF Test Client对象数组输入问题
    [转载]C#开发Winform记录用户登录状态的方法
    using(C#)
    使用 SCTP 优化网络
  • 原文地址:https://www.cnblogs.com/jiligalaer/p/5381611.html
Copyright © 2011-2022 走看看