zoukankan      html  css  js  c++  java
  • Java的内部类

    Java的内部类(Inner Class)与C++所说的嵌套类(Nested Class)类似,只是说法不同而已。

    Java有4种形式的内部类:静态内部类、成员内部类(普通内部类)、局部内部类、匿名内部类。

    例如:

    class outerClass{
        static class innerClass{}//静态内部类
    }
    class outerClass{
        class innerClass{}//成员内部类(普通内部类)
    }
    class outerClass{
        public void memberFunction(){
            class innerClass{}//局部内部类
        }
    }
    
    class MyFrame extends Frame{ //外部类
        public MyFrame(){
            addWindowListener(new WindowAdapter(){  //匿名内部类
                public void windowClosing(WindowEvent e){
                    dispose();
                    System.exit();
                }
            });
        }
    }
    • 静态内部类的特点:被声明为static的内部类,它可以不依赖于外部类的实例化而被实例化,而普通的内部类需要在外部类被实例化之后才能实例化。静态类不可以与外部类具有相同的名字,不能访问外部类的普通成员变量,只能访问外部类的静态成员、静态方法(包括私有类型)、构造函数。
    • 成员内部类:静态内部类去掉static关键字就成为普通的成员内部类。成员内部类为非静态内部类,它能访问外部类的所有属性和方法。但它与一个外部类的实例绑定在一起,因此不可以有静态的属性和方法。成员内部类只能在外部类被实例化之后才能被实例化
    • 局部内部类:是指定义在一个代码块内的类,它的作用范围为其所在的代码块,是内部类中最少使用到的一种类型。局部内部类像局部变量一样,不能被public、protected、private、static修饰,只能访问方法中定义为final类型的局部变量。局部静态内部类与静态内部类的基本特性相同。
    • 匿名内部类:是一种没有类名的内部类,不适用class,extends,implements,没有构造函数,它必须继承其他类或实现其他接口。使用匿名内部类的好处是使得代码更加简洁,但会使得代码可读性降低。它一般应用于GUI编程中的事件处理。匿名内部类不能定义自己的静态成员、方法和类。匿名内部类一定是跟在new的后面,匿名内部类也是一种局部内部类,所有对局部内部类的要求也适用于匿名内部类。

    注:以上内容摘自何昊的《Java程序员面试笔试宝典》一书。

  • 相关阅读:
    vue.extend 拓展
    leetcode-166-分数到小数(用余数判断有没有出现小数的循环体)
    leetcode-165-比较版本号
    leetcode-162-寻找峰值
    vector.clear()不能用来清零
    leetcode-209-长度最小的子数组
    leetcode-201-数字范围按位与
    完全多部图的判断(个人思考)
    leetcode-200-岛屿的个数(dfs找所有的连通分量)
    leetcode-151-翻转字符串里的单词
  • 原文地址:https://www.cnblogs.com/aaronhoo/p/7423457.html
Copyright © 2011-2022 走看看