面向对象编程(OOP)
与面向过程编程(POP)相比的优点
- 易维护:由于良好的结构和封装性,OOP 程序通常更容易维护。
- 易复用:通过继承和多态,OOP 设计使得代码更具复用性,方便扩展功能。
- 易扩展:模块化设计使得系统扩展变得更加容易和灵活。
对象实例与对象引用
- 对象引用指向对象实例(对象引用存放在栈内存中),通过 new 创建对象实例(对象实例在堆内存中)。
构造方法
- 构造方法是一种特殊的方法,主要作用是完成对象的初始化工作。
- 每次使用 new 创建对象时,构造方法会自动调用,以初始化对象的属性和状态,但是不能像普通方法那样直接调用。
- 如果一个类没有声明构造方法,也可以执行。
- 构造方法不能被重写(override),但可以被重载(overload)。
类设计技巧
- 一定要保证数据私有。
- 一定要对数据初始化。
- 不要在类中使用过多的基本类型。用其他的类代替这几个类型。
- 不是所有的类都需要单独的get、set方法。
- 分解有过多职责的类。
- 类名和方法名要能够体现他们的职责。
- 优先使用不可变的类。
继承设计技巧
- 将公共操作和字段放在超类中。
- 不要使用受保护的字段。
- 使用继承实现 is-a 关系。
- 除⾮所有继承的⽅法都有意义,否则不要使⽤继承。
- 使用多态,而不要使用类型信息。
- 不要滥用反射机制。
接口
接口的概念
- Java 接口是一些抽象方法的集合。一个接口只有方法的特征而没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能)。
- 接口可以理解为一种特殊的类,里面全部是由全局常量和公共的抽象方法所组成。接口是解决Java无法使用多继承的一种手段,但是接口在实际中更多的作用是制定标准的。或者我们可以直接把接口理解为100%的抽象类,既接口中的方法必须全部是抽象方法。
- 继承是一个"是不是"的 is-a 关系,而接口实现则是 "能不能"的 has-a 关系。
接口的好处
- 一个类可以实现多个接口,弥补了单继承的不足。
- 可以面向接口编程,更利于程序的解耦合。