Jared's blog Jared's blog
首页
  • 数据结构与算法
  • 计算机网络
  • 操作系统
  • Java
  • 数据库SQL
  • 设计模式
  • 集成开发环境
  • Linux系统
  • 代码管理
  • 项目管理
  • 后端

    • 中间件
    • Spring家族
    • 服务器软件
    • 数据库
    • 搜索引擎
    • 分布式&微服务
    • 容器化
  • 前端

    • 基础
    • 模板框架
    • 组件化框架
  • 运维知识
  • 部署工具
架构与模型
  • 在线教育
  • 电商
  • 疑惑日志
  • 随笔
  • 友链
  • 书籍
  • 娱乐
  • Github (opens new window)
  • Gitee (opens new window)
  • CSDN (opens new window)

Jared H

💻🤣😜
首页
  • 数据结构与算法
  • 计算机网络
  • 操作系统
  • Java
  • 数据库SQL
  • 设计模式
  • 集成开发环境
  • Linux系统
  • 代码管理
  • 项目管理
  • 后端

    • 中间件
    • Spring家族
    • 服务器软件
    • 数据库
    • 搜索引擎
    • 分布式&微服务
    • 容器化
  • 前端

    • 基础
    • 模板框架
    • 组件化框架
  • 运维知识
  • 部署工具
架构与模型
  • 在线教育
  • 电商
  • 疑惑日志
  • 随笔
  • 友链
  • 书籍
  • 娱乐
  • Github (opens new window)
  • Gitee (opens new window)
  • CSDN (opens new window)
  • 数据结构与算法

  • 计算机网络

  • 操作系统

  • Java

    • 语言基础

      • 面向对象
      • 关键字
      • 运算符
      • 抽象类
      • 接口
      • 类型
      • String
      • 异常
      • 反射
      • 注解
      • 内部类
        • 成员内部类
        • 局部内部类(定义在方法中的类)
        • 匿名内部类(要继承一个父类或者实现一个接口、直接使用new 来生成一个对象的引用)
      • 泛型
      • 序列化
      • 复制
    • 集合

    • 并发、多线程

    • JVM

    • 工具

    • IO

    • 新特性

    • http通信流程图
  • 数据库-SQL

  • 设计模式

内部类

# 11.内部类

  • 成员内部类
  • 局部内部类(定义在方法中的类)
  • 匿名内部类(要继承一个父类或者实现一个接口、直接使用new 来生成一个对象的引用)

# 成员内部类

定义在类内部的非静态类,就是成员内部类。成员内部类不能定义静态方法和变量(final 修饰的除外)。这是因为成员内部类是非静态的,类初始化的时候先初始化静态成员,如果允许成员内部类定义静态变量,那么成员内部类的静态变量初始化顺序是有歧义的。

public class Out {
     private static int a;
     private int b;
  
  public class Inner {
     public void print() {
       System.out.println(a);
       System.out.println(b);
       }
    } 
}
1
2
3
4
5
6
7
8
9
10
11

# 局部内部类(定义在方法中的类)

定义在方法中的类,就是局部类。如果一个类只在某个方法中使用,则可以考虑使用局部类。

public class Out {
  private static int a;
  private int b;
 
public void test(final int c) {
  final int d = 1;
  class Inner {
    public void print() {
      System.out.println(c);
    }
  }
} 
}
1
2
3
4
5
6
7
8
9
10
11
12
13

# 匿名内部类(要继承一个父类或者实现一个接口、直接使用new 来生成一个对象的引用)

匿名内部类我们必须要继承一个父类或者实现一个接口,当然也仅能只继承一个父类或者实现一个接口。同时它也是没有 class 关键字,这是因为匿名内部类是直接使用 new 来生成一个对象的引用

public abstract class Bird {
 private String name;
 public String getName() {return name;}
 public void setName(String name) {this.name = name;}

  public abstract int fly();
}
1
2
3
4
5
6
7
public class Test {
  public void test(Bird bird){
    System.out.println(bird.getName() + "能够飞 " +   bird.fly() + "米");
  }

 public static void main(String[] args) {
    Test test = new Test();

    test.test(new Bird(){
       public int fly() {
           return 10000;
        }
      public String getName() {
            return "大雁";
        }
    });
    } 
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
上次更新: 2022/04/01, 15:14:40
注解
泛型

← 注解 泛型→

Theme by Vdoing Copyright © 2020-2022 Jared H
粤ICP备20046800号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式
×