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

    }

  • 相关阅读:
    Python 自动化测试实战训练营,由浅入深,从小白到测试高手!
    接口测试 Mock 实战(二) | 结合 jq 完成批量化的手工 Mock
    从文科生转行测试,再到大厂测试开发工程师,我是如何做到的?
    严正声明|严厉打击盗版侵权、非法销售「霍格沃兹测试学院」课程的违法行为
    「金羽毛」有奖征文 | 记录测试开发技术进阶之路的点滴
    测试工程师职业发展漫谈
    Workshop 深圳站|实战+源码架构剖析带你揭开Appium的神秘面纱
    那些难改的 Bug,最后都怎样了?
    BAT大厂都在用的Docker。学会这三招,面试、工作轻松hold住
    2021 开年学习送福利,助力测试进阶提升!
  • 原文地址:https://www.cnblogs.com/wanisily/p/7326756.html
Copyright © 2020-2023  润新知