GoF23-------Java中的内部类

在Java中,可以把一个类定义到另一个类的内部,在类里面的这个类叫做内部类,在外面的类叫做外部类。内部类可以看做是外部类的一个成员(与类的属性和方法相似)。

内部类可以分为:

  • 静态内部类
  • 成员内部类
  • 局部内部类
  • 匿名内部类

1.静态内部类

class outerClass{
    static class innerClass{}    //静态内部类
}

(1)静态内部类不依赖于外部类的实例而被实例化,通常的内部类在外部类实例化后才能被实例化。

(2)静态内部类只能访问外部类的静态成员变量和方法。

2. 成员内部类

class outerClass{
    class innerClass{}   //成员内部类
}

(1)只有外部类实例化后,内部类才能被实例化。

(2)可以自由的引用外部类的变量和方法(无论是静态的还是非静态的)。

(3)不可以定义静态的属性和方法。

3.局部内部类

class outerClass{
    public void function(){
        class innerClass{};        //局部内部类
    }
}

局部内部类是定义在一个代码块中的内部类,它的作用范围就是这个代码块。是内部类中最少使用到的一个内部类。

(1)局部内部类就像是局部变量一样,不能被public private protected static修饰。

(2)只能访问代码块中定义为final的局部变量。

4.匿名内部类

public class MyFrame extends Frame{

    public MyFrame(){

        addWindowListener(new WindowAdapter(){
            public void windowClosing(WindowEvent e){
                dispose();
                System.exit(0);
            }

        });

    }
}

(1)匿名内部类是一种没有名字的内部类,不使用关键字class extends implements。。

(2)匿名内部类没有构造函数。

(3)一个匿名内部类必须是在new的后面,必须继承其他的类或者实现其他的接口。

(4)匿名内部类中不能定义静态的成员、方法和类。

(5)匿名内部类不能是 public protected private static的。

(6)匿名内部类是一个局部内部类,所以局部内部类的所有限制对其都生效。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值