面向:就相当于拿找
对象:能干活的东西
面向对象编程:拿东西过来做对应的事
让我们通过一个比喻来了解 JAVA 中的面向对象思想。
想象一下你正在建一座房子:
1. **类(Class)- 房子的蓝图**
在建造房子之前,你需要有一份详细的蓝图,指明了房子的结构和设计。在 JAVA 编程中,类就好比这样的一份蓝图,其中定义了对象的属性和方法(即对象可以做什么,有什么特点)。
2. **对象(Object)- 根据蓝图建造的房子**
根据蓝图你可以建造多座结构相同但独立的房子。同理,在 JAVA 中,你可以根据一个类创建多个对象,它们都有类中定义的属性和方法,但每个对象可以有自己独特的属性值。
3. **属性(Attribute)- 房子的特性**
每座房子都有自己的特性,比如卧室的数量、房子的颜色等。在 JAVA 中,对象的属性就是用来描述对象的特性的,例如一个`Person`类可以有`name`和`age`属性。
4. **方法(Method)- 房子的功能**
一个房子有多种功能,比如可以开窗通风,可以开门出入。在 JAVA 中,对象的方法就是定义对象可以执行什么样的操作。
5. **封装(Encapsulation)- 房子的私密性**
房子有一些区域是私人的,不对外公开,比如你可能不希望任何人都可以进入你的卧室。JAVA 中的封装就是这样一个概念,可以限制对某些属性或方法的访问,保证对象的内部状态的安全。
6. **继承(Inheritance)- 房屋样式的传承**
如果你有一个已经设计好的房子蓝图,你可以在这个基础上添加更多的特性,比如添加一个花园或者泳池。JAVA 中的继承允许你在一个已存在的类的基础上创建一个新的类,继承原来类的属性和方法,并可以添加新的属性和方法或重写原有的方法。
7. **多态(Polymorphism)- 房子的多功能性**
一间房子可以用作多种用途,比如可以作为居住用房,也可以改造成办公室。JAVA 中的多态允许一个方法有多种实现方式,具体执行哪种实现可以在运行时动态决定。
JAVA 采用面向对象编程(Object-Oriented Programming, OOP)原因可以从几个方面来解析:
1. **代码重用和模块化**:
通过使用类和对象,JAVA 程序员可以更容易地重用代码。类可以作为模块来创建,而后可以在多个项目或程序中重复使用,这有助于减少代码重复和提高代码的可重用性。
2. **更容易维护和扩展**:
OOP 允许程序员以更结构化和模块化的方式来组织代码。这意味着当需要修改或扩展程序时,可以更容易地识别和修改相关的部分,而不是整个代码基础。
3. **更好的问题域建模**:
OOP 允许程序员创建对象,这些对象可以很好地模拟现实世界中的实体和关系。这有助于更准确地模拟和解决实际问题,因为可以直接将现实世界的概念和结构映射到程序中。
4. **封装提高安全性**:
通过封装,JAVA 程序可以隐藏对象内部的状态,并只通过定义好的接口来与对象交互。这有助于保护对象的内部状态不被外部代码错误地访问或修改,提高了代码的安全性和稳定性。
5. **更好的代码可读性和组织结构**:
OOP 提倡将相关的属性和方法组织在一个类中,这样有助于提高代码的可读性和清晰度,使得代码结构更为清晰和有组织。
6. **灵活性和动态性**:
通过使用多态和继承,JAVA 可以创建更灵活和动态的程序。多态允许程序在运行时决定使用哪个方法,而继承则允许程序员创建新的类,复用和扩展现有类的功能。
7. **推动了设计模式的发展**:
OOP 也促进了设计模式的发展。设计模式是解决常见编程问题的最佳实践和模式,许多设计模式是基于 OOP 原则和概念创建的,可以帮助创建更健壮、可维护和可扩展的程序。
基于以上原因,JAVA 采用了面向对象编程模式,使其成为了一个强大、灵活且适用于多种应用场景的编程语言。
我们平时在处理问题的时候无论是洗衣还是扫地还是聊天都要找到对应的工具。
1.就是学习获取已有对象并使用
2.学习自己设计对象并使用:
在 JAVA 中学习面向对象编程(OOP):
1. **类和对象**:
- **类的定义与实例化**:理解类是什么,如何定义类,以及如何创建类的实例(对象)。
- **对象的属性与方法**:理解对象的属性(数据成员)和方法(函数)如何定义和使用。
2. **封装**:
- **访问修饰符**:理解不同的访问修饰符(private, public, protected)如何控制类成员的访问权限。
- **构造方法与Getter/Setter方法**:理解如何通过构造方法初始化对象和通过getter和setter方法访问和修改对象的属性。
3. **继承**:
- **基础和派生类**:理解继承的概念,包括如何创建基类和派生类。
- **方法重写**:理解如何在派生类中重写基类的方法以实现新的功能。
4. **多态**:
- **方法重载**:理解方法重载的概念及其用途。
- **动态绑定**:理解动态绑定和如何通过它实现多态。
5. **抽象类与接口**:
- **抽象类**:理解抽象类的概念及其用途。
- **接口**:理解接口的概念和如何使用它来实现多重继承和定义契约。
6. **异常处理**:
- **异常类型**:理解JAVA中不同类型的异常(checked和unchecked)。
- **异常处理**:理解如何使用try-catch块和throw/throws关键字进行异常处理。
7. **设计模式**:
- **常用设计模式**:学习和理解一些常用的OOP设计模式,如单例模式,工厂模式,观察者模式等。
8. **实际项目练习**:
- **项目实战**:通过实际项目练习来加深对OOP概念的理解和应用。
9. **代码质量和最佳实践**:
- **代码重用和模块化**:理解如何编写可重用和模块化的代码。
- **代码清晰与注释**:学习如何编写清晰的代码并正确地使用注释来文档化代码。
集中精力学习和理解这些重点将帮助你掌握JAVA中的面向对象编程,并成为一个更加熟练和高效的JAVA程序员。