zoukankan      html  css  js  c++  java
  • Java内部类——学习笔记

    参考:http://blog.csdn.net/aaronsi/article/details/187322 和 http://openhome.cc/Gossip/JavaGossip-V1/InnerClass.htm

    內部類別(Inner class)或「巢狀類別」(Nested class)。

    非"static"的內部類別可以分為三種:成員內部類別(Member inner class)、區域內部類別(Local inner class)與匿名內部類別(Anonymous inner class)。

    member inner classes: 要创建它的实例,必须有一个指向上层的引用,它不能含有static方法,可以有final的方法。

    local inner classes: 只能被声明成abstract/final的或默认class;只能访问final/static的本地变量。local and anonymous 内部类不能被声明为private、public、protected or static。

    anonymous inner classes: 匿名类不能含有构造函数。

    static inner classes只有最上层的类或static类可以有,并且它只能访问static变量。

    例子如下:

    public class ATest{
        int nonstatic_a = 3;
        static int static_b = 4;
        final int final_c = 5;
        public static void main(String[] args){
    
        }
        
        public void test01(int i){
            final int c=0;
            int d = 1;
    //③local inner classes只能被定义成abstract/final的;只能访问final/static的本地变量。
    //Illegal modifier for the local class InnerClass_Local; only abstract or final is permitted        
            class InnerClass_Local{
                
                final int l= 0;
                
    //Cannot refer to a non-final variable d inside an inner class defined in a different method            
    //③local inner classes只能被定义成abstract/final的;只能访问final/static的本地变量。
    //            int e = d;//Compile Error!
                int e = static_b;
                int f = final_c;
                
    //The field ll cannot be declared static; 
    //static fields/methods can only be declared in static or top level types            
    //            static int ll=2; //Compile Error!
    //            static void f1(){//Compile Error!
    //                System.out.print(c);
    //            }
                
            }
    
        }
        
        void fun2(){
    
        }
        
        static class InnerClass2{
            static int ll=2;
            int aa=3; 
    //①static inner classes只有最上层的类或static类可以有,并且它只能访问static变量。
    //        int bb = nonstatic_a; //Compile Error! 
            
            static class InnerClass5{            
            }
        }
        
        class InnerClass3{
            //②member inner classes要创建它的实例,必须有一个指向上层的引用,它不能含有static方法。
            //The member type InnerClass4 cannot be declared static; 
            //static types can only be declared in static or top level types
    //        static class InnerClass4{//Compile Error!
    //        }
            final void inner_fun(){
                
            }
        }
        
        final class InnerClass4{
            void final_fun(){
            }
        }
        
    }
  • 相关阅读:
    .Net Core微服务——Ocelot(2):集成Consul 老马
    .NET 微服务——CI/CD(1):Jenkins+Gitee自动构建 老马
    .Net Core——用SignalR撸个游戏 老马
    JUC之线程间的通信
    SpringBoot文章合集
    JUC之线程间定制化通信
    JUC之集合中的线程安全问题
    JUC文章合集
    JUC之Lock接口以及Synchronized回顾
    JUC概述
  • 原文地址:https://www.cnblogs.com/lionfight/p/3200967.html
Copyright © 2011-2022 走看看