摘要:
内部类可对同一包中其他类隐藏,内部类方法可以访问定义这个内部类的作用域中的数据,包括 private 数据。 内部类是一个编译器现象,与虚拟机无关。 编译器会把内部类转换成常规的类文件,用 $ 分隔外部类名与内部类名,其中匿名内部类使用数字编号,虚拟机对此一无所知。 静态内部类: 属于外部类,只加载 阅读全文
摘要:
equals: 检测对象是否相等,默认使用 == 比较对象引用,可以重写 equals 方法自定义比较规则。 equals 方法规范:自反性、对称性、传递性、一致性、对于任何非空引用 x,x.equals(null) 返回 false。 hashCode: 散列码是由对象导出的一个整型值,没有规律, 阅读全文
摘要:
类关系 描述 权力强侧 举例 继承 父子类之间的关系:is-a 父类 小狗继承于动物 实现 接口和实现类之间的关系:can-do 接口 小狗实现了狗叫接口 组合 比聚合更强的关系:contains-a 整体 头是身体的一部分 聚合 暂时组装的关系:has-a 组装方 小狗和绳子是暂时的聚合关系 依赖 阅读全文
摘要:
重载 重载指方法名称相同,但参数类型个数不同,是行为水平方向不同实现。 对编译器来说,==方法名称和参数列表==组成了一个唯一键,称为方法签名,JVM 通过方法签名决定调用哪种重载方法。 ==(方法签名不包括返回类型)== 不管继承关系如何复杂,重载在编译时可以根据规则知道调用哪种目标方法,因此属于 阅读全文
摘要:
概念 面向过程让计算机有步骤地顺序做一件事,是过程化思维,使用面向过程语言开发大型项目,软件复用和维护存在很大问题,模块之间耦合严重。 面向对象相对面向过程更适合解决规模较大的问题,可以拆解问题复杂度,对现实事物进行抽象并映射为开发对象,更接近人的思维。 例如开门这个动作,面向过程是 open(Do 阅读全文
摘要:
final方法可以被继承或者重载,但是不能被重写 final可用于声明属性、方法和类,分别表示属性不可变,方法不可重写,类不可继承。 阅读全文
摘要:
所有异常都是 Throwable 的子类,分为 Error 和 Exception。 Error 是 Java 运行时系统的内部错误和资源耗尽错误,例如 StackOverFlowError 和 OutOfMemoryError,这种异常程序无法处理。 Exception 分为受检异常和非受检异常, 阅读全文
摘要:
什么是泛型: 泛型本质是参数化类型,解决不确定对象具体类型的问题。泛型在定义处只具备执行 Object 方法的能力。 泛型的好处: 类型安全,放置什么出来就是什么,不存在 ClassCastException 提升可读性,编码阶段就显式知道泛型集合、泛型方法等处理的对象类型 代码重用,合并了同类型的 阅读全文
摘要:
注解是一种标记,使类或接口附加额外信息,帮助编译器和 JVM 完成一些特定功能,例如 @Override 标识一个方法是重写方法。 元注解是自定义注解的注解(负责对其它注解进行说明的注解,自定义注解时可以使用元注解) Java 5 定义了 4 个注解,分别是 @Documented、@Target、 阅读全文
摘要:
什么是反射: 在运行状态中,对于任意一个类都能知道它的所有属性和方法,对于任意一个对象都能调用它的任意方法和属性,这种动态获取信息及调用对象方法的功能称为反射。 缺点是破坏了封装性以及泛型约束。 反射是框架的核心,Spring 大量使用反射。 Class 类的作用: 在程序运行期间,Java 运行时 阅读全文