- Java中复用的方式为组合和继承
- 把对象的引用 放置在一个新的类里,这就使用了组合。
- 每个非基本类型对象都有一个 toString() 方法,在编译器需要字符串但它有对象的特殊情况下调用该方法。
- 初始化引用有四种方法: 1. 当对象被定义时。这意味着它们总是在调用构造函数之前初始化。 2. 在该类的构造函数中。 3. 在实际使用对象之前。这通常称为延迟初始化。在对象创建开销大且不需要每次 都创建对象的情况下,它可以减少开销。 4. 使用实例初始化。
- 除非显式地继承其他类,否则就隐式地继承 Java 的标准根类对象(Object)。
- 为了允许继承,一 般规则是所有字段为私有,所有方法为公共。
- 必须正确初始化基类子对象,而且只有一种方法可以保证这一点: 通过调用基类构造函数在构造函数中执行初始化,该构造函数具有执行基类初始化所需的所有适当信息 和特权。Java 自动在派生类构造函数中插入对基类构造函数的调用
- 如果没有无参数的基类构造函数,或者必须调用具有参数的基类构造函 数,则必须使用 super 关键字和适当的参数列表显式地编写对基类构造函数的调用
- 对基类构造函数的调用必须是派生类构造函数中的第一个操作
- 尽管编译器强制你初始化基类,并要求你在构造函数的开头就初始化基类,但它并 不监视你以确保你初始化了成员对象
- try 关键字表示后面的块 (用花括号分隔) 是一个受保护的区域,这 意味着它得到了特殊处理。其中一个特殊处理是,无论 try 块如何退出,在这个保护区 域之后的 finally 子句中的代码总是被执行。
- 当你想在新类中包含一个已有类的功能时,使用组合,而非继承
- 当使用继承时,使用一个现有类并开发出它的新版本。通常这意味着使用一个通用 类,并为了某个特殊需求将其特殊化
- 尽管可以创建 protected 属性,但是最好的方式是将属性声明为 private 以一直 保留更改底层实现的权利。然后通过 protected 控制类的继承者的访问权限。
- 继承最重要的方面不是为新类提供方法。它是新类与基类的一种关系。简而言之, 这种关系可以表述为 “新类是已有类的一种类型”。
- 继承保证了基类的所 有方法在派生类中也是可用的,所以任意发送给该基类的消息也能发送给派生类。假设有 一个基类 Instrument 代表音乐乐器和一个派生类 Wind。如果 Instrument 有一个 play() 方法,那么 Wind 也有该方法。这意味着你可以准确地说 Wind 对象也是一种类型的 Instrument。Wind 对象同时也 是一个 Instrument 对象,这种把 Wind 引用转换为 Instrument 引用的行为称作向上转型。
- 继承图中派生类转型为基类是向上的,所以通常称作向上转型。向上转型期间,类接口只可能失去方法,不会增加方法。
- 一种判断使用组合还 是继承的最清晰的方法是问一问自己是否需要把新类向上转型为基类。如果必须向上 转型,那么继承就是必要的,但如果不需要,则要进一步考虑是否该采用继承
- static 强调只有一个,final 说明是一个常量。 按照惯例,带有恒定初始值的 final static 基本变量(即编译时常量)命名全部使 用大写,单词之间用下划线分隔。
- 在参数列表中,将参数声明为 final 意味着在方法中不能改变参数指向的对象或基 本变量
- 类中所有的 private 方法都隐式地指定为 final。因为不能访问 private 方法,所 以不能覆写它。可以给 private 方法添加 final 修饰,但是并不能给方法带来额外的含 义。
- 如果一个方法是 private 的,它就不是 基类接口的一部分。它只是隐藏在类内部的代码,且恰好有相同的命名而已。但是如果 你在派生类中以相同的命名创建了 public,protected 或包访问权限的方法,这些方法 与基类中的方法没有联系,你没有覆写方法,只是在创建新的方法而已。由于 private 方法无法触及且能有效隐藏,除了把它看作类中的一部分,其他任何事物都不需要考虑 到它。
- 当说一个类是 final ,就意味着它不能被继承。
- 每个类的编译代码都存在于它自己独立的文件 中。该文件只有在使用程序代码时才会被加载。一个类当它 任意一个 static 成员被访问时,就会被加载。
- 尽管在面向对象编程时极力强调继承,但在开始设计时,优先使用组合(或委托), 只有当确实需要时再使用继承。
Java复用
最新推荐文章于 2024-06-14 14:08:37 发布