zoukankan      html  css  js  c++  java
  • Java内部类应用——静态内部类

    版权声明:本文为CSDN博主「cakincqm」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。

    原文链接:https://blog.csdn.net/chengqiuming/article/details/91350841

    一 点睛

    如果使用static来修饰一个内部类,则这个内部类就属于外部类本身,而不属于外部类的某个对象。因此使用static修饰的内部类被称为类内部类,也称为静态内部类。

    static关键字不可修饰外部类,但可修饰内部类。

    二 实战——静态内部类不能访问外部类的实例成员,只能访问外部类的类成员

    1 点睛

    静态内部类可以包含静态成员,也可以包含非静态成员。根据静态成员不能访问非静态成员的规则,静态内部类不能访问外部类的实例成员,只能访问外部类的类成员。即使是静态内部类的实例方法也不能访问外部类的实例成员,只能访问外部类的静态成员。

    2 代码

    public class StaticInnerClassTest
    {
       private int prop1 = 5;
       private static int prop2 = 9;
       static class StaticInnerClass
       {
          // 静态内部类里可以包含静态成员
          private static int age;
          public void accessOuterProp()
          {
             // 下面代码出现错误:
             // 静态内部类无法访问外部类的实例变量
             //System.out.println(prop1);
             // 下面代码正常
             System.out.println(prop2);
          }
       }
    }

    3 说明

    accessOuterProp是一个实例方法,但依然不能访问外部类的prop1成员变量,因为这是实例变量。但可以访问prop2,因为它是静态成员变量。

    三 实战——外部类使用静态内部类

    1 点睛

    静态内部类是外部类的一个静态成员,因此外部类的所有方法、所有初始化块可以使用静态内部类来定义变量、创建对象。

    外部类依然不能直接访问静态内部类的成员,但可以使用静态内部类的类名作为调用者来访问静态内部类的类成员,也可以使用静态内部类对象作为调用者来访问静态内部类的实例成员。

    2 代码

    public class AccessStaticInnerClass
    {
       static class StaticInnerClass
       {
          private static int prop1 = 5;
          private int prop2 = 9;
       }
       public void accessInnerProp()
       {
          // System.out.println(prop1);
          // 上面代码出现错误,应改为如下形式:
          // 通过类名访问静态内部类的类成员
          System.out.println(StaticInnerClass.prop1);
          // System.out.println(prop2);
          // 上面代码出现错误,应改为如下形式:
          // 通过实例访问静态内部类的实例成员
          System.out.println(new StaticInnerClass().prop2);
       }
    }
  • 相关阅读:
    SpringBoot整合SpringDataJPA,今天没啥事情就看了一下springboot整合springdataJPA,实在是香啊,SQL语句都不用写了
    SpringMVC+Spring+Mybatis整合
    开源的分布式事务框架 springcloud Alibaba Seata 的搭建使用 一次把坑踩完。。。
    spring cloud Alibaba --sentinel组件的使用
    springcloud整合config组件
    springcloud整合geteway网关服务
    springcloud组件之hystrix服务熔断,降级,限流
    干货 springcloud之 poenFeign的使用
    springcloud组件之注册中心eureka学习
    面试题---->线程的入门,读完可以应付一般的面试(管理员不要移除我的随笔啊)
  • 原文地址:https://www.cnblogs.com/doyi111/p/11705814.html
Copyright © 2011-2022 走看看