博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java静态内部类
阅读量:5321 次
发布时间:2019-06-14

本文共 1929 字,大约阅读时间需要 6 分钟。

只是一个简单的记录。因为一直排斥java这个东西。java跟c++比是很不错的一个语言,至少内存管理这么麻烦的东西不用操心了。但是和不断崛起的脚本语言比起来,效率差的太多。无论如何做android还是需要java的,所以遇到什么就看点什么。

既然要用静态内部类,那么就看看为什么不用非静态内部类:

package com.company;class Company {    private String theCEO = "stupid";    private static String companyName = "STUPID COM";    class Employee {        public Employee() {            // 1            System.out.println("company name - " + companyName);            // 2            System.out.println("CEO - " + theCEO);        }    }    public Company(){        System.out.println("Company object is created");    }}public class Main {    public static void main(String[] args) {        // 3        Company company = new Company();        // 4        Company.Employee employee = company.new Employee();    }}

首先创建一个叫做Company的类,这个类有一个companyName静态成员和一个theCEO非静态成员。静态的公司名值为二货公司,这个二货公司有一个非静态的二货CEO。然后给这个二货公司放一个非静态的员工。

  1. 这个员工可以访问到静态的公司名。
  2. 这个员工也可以访问到非静态的CEO。
  3. 要初始化员工,那就必须先初始化公司对象。
  4. 初始换员工用的不是new,而是company.new。是公司对象.new

太麻烦了,如果内部类不是静态的。要用这个内部类就必须先初始化包裹类。也是,如果不初始化出来对应的包裹类,内部类对象怎么能访问这些包裹类对象的非静态实例对象呢。

所以还是用静态类好了:

package com.company;class Company {    private String theCEO = "stupid";    private static String companyName = "STUPID COM";    // 1    static class Employee {        public Employee() {            System.out.println("company name - " + companyName);            // 2            //System.out.println("CEO - " + theCEO);        }    }    public Company(){        System.out.println("Company object is created");    }}public class Main {    public static void main(String[] args) {//        Company company = new Company();//        Company.Employee employee = company.new Employee();        // 3        Company.Employee employee = new Company.Employee();    }}

还是一个二货公司和这个公司的二货CEO还有一个员工。

  1. static,员工类变成静态内部类。
  2. 静态内部类不能再访问包裹类的非静态成员。
  3. 看起来正常的初始化方法:new Company.Employee()

一般来说,内部类不需要访问包裹类的非静态成员的时候。或者只是做一个工具给外部调用,而这些工具需要按照功能区分为的时候使用静态内部类。

转载于:https://www.cnblogs.com/lev1/p/11198738.html

你可能感兴趣的文章
【FZSZ2017暑假提高组Day9】猜数游戏(number)
查看>>
泛型子类_属性类型_重写方法类型
查看>>
考研:操作系统:进程同步—信号量实现同步互斥(PV操作)
查看>>
增加、编辑、删除等功能,几乎每个系统都会用到,针对这几个方面,写如下测试用例...
查看>>
「学习笔记」数学大礼包
查看>>
Liunx笔记
查看>>
eclipse-将同一个文件分屏显示
查看>>
阿弥陀佛的原理
查看>>
Java学习笔记--类和对象
查看>>
case when
查看>>
设计模式之模板模式
查看>>
201521123111《Java程序设计》第12周学习总结
查看>>
【Luogu2444】病毒(AC自动机)
查看>>
【BZOJ2460】元素(贪心,线性基)
查看>>
【CF528E】Triangles 3000(计算几何)
查看>>
数据库语法01
查看>>
jq 获取表单所有数据
查看>>
javaweb项目中--jsp表单通过post提交-后台取不到数据但get方式可以
查看>>
web架构
查看>>
Mysql优化必备技能之Explain的使用以及Sql优化过程
查看>>