隐藏

内部类
2022年 02月 16 日

Calvin

  1. Java中允许将一个类A声明在另一个类B中,则类A就是内部类,类B称为外部类

    1. 内部类的分类:成员内部类(静态、非静态) vs 局部内部类(方法内、代码块内、构造器内)
    2. 成员内部类:

      • 一方面,作为外部类的成员:
      • 调用外部类的结构
      • 可以被static修饰
      • 可以被4种不同的权限修饰

        3.1 另一方面,作为一个类:

      • 类内可以定义属性、方法、构造器等
      • 可以被final修饰,表示此类不能被继承。言外之意,不使用final,就可以被继承
      • 可以被abstract修饰
  2. 关注如下的3个问题

    • 4.1 如何实例化成员内部类的对象
    • 4.2 如何在成员内部类中区分调用外部类的结构

如果一个类定义在另一个类的内部,这个类就是Inner Class:

class Outer {
    private String name;

    Outer(String name) {
        this.name = name;
    }

    class Inner {
        void hello() {
            System.out.println("Hello, " + Outer.this.name);
        }
    }

内部类

  1. Java中允许将一个类A声明在另一个类B中,则类A就是内部类,类B称为外部类

    1. 内部类的分类:成员内部类(静态、非静态) vs 局部内部类(方法内、代码块内、构造器内)
    2. 成员内部类:

      • 一方面,作为外部类的成员:
      • 调用外部类的结构
      • 可以被static修饰
      • 可以被4种不同的权限修饰

        3.1 另一方面,作为一个类:

      • 类内可以定义属性、方法、构造器等
      • 可以被final修饰,表示此类不能被继承。言外之意,不使用final,就可以被继承
      • 可以被abstract修饰
  2. 关注如下的3个问题

    • 4.1 如何实例化成员内部类的对象
    • 4.2 如何在成员内部类中区分调用外部类的结构

如果一个类定义在另一个类的内部,这个类就是Inner Class:

class Outer {
    private String name;

    Outer(String name) {
        this.name = name;
    }

    class Inner {
        void hello() {
            System.out.println("Hello, " + Outer.this.name);
        }
    }

评论区(暂无评论)

这里空空如也,快来评论吧~

我要评论