• java内部类demo


    内部类主要有三种:静态内部类,实例内部类,局部变量内部类

    1.静态内部类,该类被static修饰,并且是成员变量,它只能访问外部类被static修饰的方法以及字段(这种说法只局限于不再内部类中创建外部类的对象)

    public class Outer{

      public  String name;

      /**静态内部类
      * 只能访问外部类静态的字段
      * 可以有静态和非静态的方法以及字段
      * */
           public static class StaticClass{
              public void test(String name){
                   System.out.println("呵呵呵呵"+name);
             }
       public String aaaString="aaaa";
         public static void show(){
               System.out.println("show");
             }
           }

          //得到其内部类对象的方法

           public static void main(String[] args) {      

           //静态内部类
              Outer.StaticClass staticClass = new Outer.StaticClass();
      //静态内部类 静态方法调用
        Outer.StaticClass.show();

          }

    }

    2.实例内部类,没有被static修饰,是外部类的成员变量,该内部类不能有static的字段和方法,否则就要将其声明为static的,该内部类中可以直接访问外部类所有的字段和方法,因为内部类持有外部类.this对象。test方法中name指的是方法的变量,而Outer.this.name 指的外部类的name字段

    public class Outer{

               public  String name;

        /** 实例内部类声明在成员变量上
        * 不能有静态方法或者字段
        * */
        public class InnerClass1{
          public String a ="asdf";
          public void test(String name){
          //Outer.this.name 代表的是外部的类
          Outer.this.name = name;
        }
        public void get(){
          System.out.println(Outer.this.name);
        }

                

      //得到其内部类对象的方法

           public static void main(String[] args) {           

        //实例内部类
        Outer.InnerClass1 innerClass1 = new Outer().new InnerClass1();

          }

      }

    }

    3.局部变量内部类,有一点需要注意,该内部类访问局部变量时,该局部变量需要加上final 修饰,该内部类不能使用staic修饰,故该内部类不允许有静态的方法或者字段,该内部类,内部也持有外部类.this对象,可以访问外部类的所有方法和字段

    public class Outer{

      public  String name;

      public void test(String address){

        /**内部类声明在局部变量上
        * 类不能使用static修饰
        * 字段不能被static修饰
        * */
        class InnerClass2{
          private String name;
          public int age;
          public void test(String name){
          Outer.this.name = name;
        }
      }
        InnerClass2 innerClass2 = new InnerClass2();
      }

    }

  • 相关阅读:
    weblogic.xml 精妙设置
    mysql --> select * from Employee group by name这样的语法有什么意义?
    oracle pctfree和pctused详解
    超详细 SpringMVC @RequestMapping 注解使用技巧
    Spring 注解概览
    Js替换字符串中的所有空格
    面试题精选
    Axure RP Extension for Chrome修复
    【javascript】获取 格式化时间
    万能清除浮动
  • 原文地址:https://www.cnblogs.com/wanisily/p/7326756.html
Copyright © 2020-2023  润新知