zoukankan      html  css  js  c++  java
  • 静态内部类

    内部类,一个被称为静态嵌套类,一个被称为内部类。
    从字面的角度解释是这样的:
    什么是嵌套?嵌套就是我跟你没关系,自己可以完全独立存在,但是我就想借你的壳用一下,来隐藏一下我自己,,不想被其他类依赖。
    什么是内部?内部就是我是你的一部分,我了解你,我知道你的全部,没有你就没有我。(所以内部类对象是以外部类对象存在为前提的)

    静态内部类的实例不需要先实例化外部类成员,可直接实例化。

    ①静态内部类中可以有非静态的方法

    ②当内部类中有静态方法或者静态成员变量时,一定是静态内部类

    public class Outerclass {
      static class Inner{
        private void innerVoidMethod(){//静态内部类中可以有非静态的方法
          Outerclass.outerStaticMethod();//静态内部类可以访问外部类的静态成员和方法
          new Outerclass().outerVoidMethod();
          //Outerclass().outerVoidMethod();//error, 静态内部类不可以直接访问外部类的非静态成员和方法
        }
        private static void innerStaticMethod(){
          Outerclass.outerStaticMethod();//静态内部类可以访问外部类的静态成员和方法
          //Outerclass().outerVoidMethod();//error, 静态内部类不可以直接访问外部类的非静态成员和方法
        }
      }
    
       /*class Inner2{  //error,当内部类中有静态方法或者静态成员变量时,一定是静态内部类
        private static void inner2StaticMethod(){
        }
      }*/
    
      private void outerVoidMethod(){
        System.out.println("outerVoidMethod");
      }
      private static void outerStaticMethod(){
        System.out.println("outerStaticMethod");
      }
      public static void main(String[] args) {
        new Inner().innerVoidMethod();//静态内部类的实例不需要先实例化外部类成员,可直接实例化
        Inner.innerStaticMethod();
      }
    }

    outerStaticMethod
    outerVoidMethod
    outerStaticMethod
    outerVoidMethod

  • 相关阅读:
    Server-Sent Events(SSE) 简单实现和避坑
    使用ZIP进行多文件保存和读取(JDK1.7之后ZipOutputStream已经支持中文)
    IO
    页面临时添加a元素来模拟上传下载
    Centos 7启动jar包的详细步骤
    Redis 下载地址
    永久关闭win10自动更新
    同一命名空间下,无法引用类时
    Web应用程序项目******已配置为使用IIS。未能找到Web服务器
    VS2012打开项目 提示Asp.net4.0未在web服务器上注册的解决方案
  • 原文地址:https://www.cnblogs.com/tonggc1668/p/8010857.html
Copyright © 2011-2022 走看看