你真的了解内部类有哪些?


        在 Java 语言中,可以把一个类定义到另外一个类的内部,在类里面的这个类就叫做内部
类,外面的类叫做外部类。在这种情况下,这个内部类可以被看作外部类的一个成员(与类
的属性和方法类似)。还有一种类被称为顶层(top -level)类,指的是类定义代码不嵌套在其
他类定义中的类。
        需要注意的是,嵌套类(Nested Class)与内部类(Inner Class)类似,只是嵌套类是
C++的说法,而内部类是 Java 的说法而已。内部类可以分为很多种,主要有以下 4 种:静态
内部类(static inner class)、成员内部类(member inner class)、局部内部类(local inner class)
和匿名内部类(anonymous inner class)
。它们的定义方法如下。

import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

class outerClass {
    static class innerClass {
    }// 静态内部类
}
    class outerClass{
    class innnerClass{
    }// 成员内部类(普通内部类)
}
class outerClass{
    public void menberFunction(){
        class innerClass{}//局部内部类
    }
}
public class MyFrame extends Frame{// 外部类
    public MyFrame(){
        addWindowListener(new WindowAdapter() {//匿名内部类
            public void windowClosing(WindowEvent e){
                dispose();
                System.exit(0);
            }
        });
    }
}

        静态内部类是指被声明为 static 的内部类,它可以不依赖于外部类实明X? QVno以
通常的内部类需要在外部类实例化后才能实例化。静态内部类不能与外部类宥箱崗的!
不能访问外部类的普通成员变量,只能访向外部类中的静态成员和静态方法(包括私有类
型)。
        一个静态内部类,如果去掉“slatic”关键字,就成为成员内部类。成员内部类为非静
态内部类,它可以自由地引用外部类的属性和方法,无论这些属性和方法是静态的还是非
静态的。但是它与一个实例绑定在了一起,不可以定义静态的属性和方法。只有在外部的
类被实例化后,这个内部类才能被实例化。需要注意的是,非静态内部类中不能有静态成员。
        局部内部类指的是定义在一个代码块内的类,它的作用范围为其所在的代码块,是内部类
中最少使用到的一种类型。局部内部类像局部变量一样,不能被 public、protected、private 以
及 statie 修饰,只能访问方法中定义为 final 类型的局部变量。对一个静态内部类,去掉其声明
中的“statie”关键字,将其定义移人其外部类的静态方法或静态初始化代码段中就成为了局
部静态内部类。对一个成员类,将其定义移人其外部类的实例方法或实例初始化代码中就成为
了局部内部类。局部静态内部类与静态内部类的基本特性相同。局部内部类与内部类的基本特
性相同。
        匿名内部类是一种没有类名的内部类,不使用关键字 class、extends、implements,没有构
造函数,它必须继承(extends)其他类或实现其他接口。匿名肉部类的好处是代码更加简洁、
紧凑,但带来的问题是易读性下降。它一般应用于 GUI(Graphieal Ueer Interface,图形用户界
面)编程中实现事件处理等。在使用匿名内部类时,需要牢记以下几个原则:

1)匿名内部类不能有构造函数。
2)匿名内部类不能定义静态成员、方法和类。
3)匿名内部类不能是 public、prolected、private、static。
4)只能创建匿名内部类的一个实例。
5)一个匿名内部类一定是在 new 的后面,这个匿名类必须继承一个父类或实现一个
接口。
6)因为匿名内部类为局部内部类,所以局部内部类的所有限制都对其生效。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

纳什1

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值