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

           

  • 相关阅读:
    Phalanx--hdu2859(dp 最大对称子图)
    Spring Cloud-hystrix Dashboard(八)
    Spring Cloud-hystrix使用例子(七)
    mysql deadlock、Lock wait timeout解决和分析
    Spring Cloud-hystrix(六)
    Spring Cloud-Ribbon负载均衡策略类IRule(五)
    Spring Cloud-Ribbon ILoadBalancer负载均衡器核心源码(四)
    Spring Cloud-Ribbon实现客户端的服务均衡(三)
    Spring Cloud-Eureka实现服务的注册与发现(二)
    Spring Cloud-个人理解的微服务演变过程(一)
  • 原文地址:https://www.cnblogs.com/jiligalaer/p/5381611.html
Copyright © 2020-2023  润新知