java学习阶段一 内部类

java学习阶段一 内部类

介绍

类中可以包含一个类,成为相对的内部类 外部类 实现信息隐藏

基本知识

  • 成员内部类(普通内部类)

    获取内部类对象实例

    //第一种 外部类名.内部类名 对象名 = new 外部类名().new内部类名(); 
    //第二种 外部类名.内部类名 对象名 = 已存在外部类对象名.内部类名();
    //外部类设置一个获取内部类的方法 调用此方法
    

    内部类访问修饰符和一般类一样使用方法

    内部类可以直接访问外部类的成员

    属性重名 使用 外部类名.this.属性 访问

    方法重名

    外部类访问内部类需要通过内部类实例

  • 静态内部类 (static修饰)

    和成员类区别:

    只能直接访问外部类的静态方法和成员,如果需要调用非静态方法,只能通过实例化外部类对象调用

    静态内部类实例不需要依赖外部类对象

    可以通过 外部类.内部类.静态成员 来访问静态内部类静态成员

    属性与外部类重名时需要访问外部类静态属性 通过 外部类.属性 非静态属性 则 new 外部类().属性

  • 方法内部类 (在方法中的内部类)

    此类作用域在方法中 不能定义静态成员

    和方法内部成员一样不能有访问修饰符

    可以包含final 和abstract

  • 匿名内部类 (隐藏名字)

    使用场景: 对类的实例化只有一次

    //在调用方法的传参中
    new 抽象类或者接口类名(){重写方法}
    

注意事项

匿名内部类无法添加修饰符 无法编写构造方法 可以添加构造代码块 不能出现静态成员

只能有一个方法名 所以此类只能继承或者实现一个接口

原文地址:https://www.cnblogs.com/tigo/p/14409659.html