zoukankan      html  css  js  c++  java
  • AJPFX关于Java内部类及其实例化

    public class Outer {
        private int size;
        public class Inner {
            private int counter = 10;
            public void doStuff() {
                size++;
            }
        }
        public static void main(String args[]) {
            Outer outer = new Outer();
            Inner inner = outer.new Inner();
            inner.doStuff();
            System.out.println(outer.size);
            System.out.println(inner.counter);
            // 编译错误,外部类不能访问内部类的变量
            System.out.println(counter);
        }
    }
    这段代码定义了一个外部类 Outer,它包含了一个内部类 Inner。将错误语句注释掉,编译,会生成两个 .class 文件:Outer.class 和 Outer$Inner.class。也就是说,内部类会被编译成独立的字节码文件。

    内部类是一种编译器现象,与虚拟机无关。编译器将会把内部类翻译成用 $ 符号分隔外部类名与内部类名的常规类文件,而虚拟机则对此一无所知。

    注意:必须先有外部类的对象才能生成内部类的对象,因为内部类需要访问外部类中的成员变量,成员变量必须实例化才有意义。

  • 相关阅读:
    POJ 3672 水题......
    POJ 3279 枚举?
    STL
    241. Different Ways to Add Parentheses
    282. Expression Add Operators
    169. Majority Element
    Weekly Contest 121
    927. Three Equal Parts
    910. Smallest Range II
    921. Minimum Add to Make Parentheses Valid
  • 原文地址:https://www.cnblogs.com/AJPFX/p/10891249.html
Copyright © 2011-2022 走看看