五、Java面向对象概述

一、概述

1、什么是面向对象?
面向过程:代表语言 C语言 实现功能的每一步都需要我们参与实现,在此之前写的所有程序都是面向过程的思想
面向对象:代表语言,java python 我们从参与者变成了指挥者

2、这两个思想的举例:
喝水:
面向过程思想解释:
拿起水杯 -- 自己走到饮水机面前 -- 自己选择热水还是冷水 -- 自己接水 (参与者)
面向对象思想解释:
祈求同桌帮自己接水 -- 他走到饮水机面前 -- 他选择热水还是冷水 -- 他接水 (指挥者)

3、从伪代码的角度解释
例子:将大象装进冰箱:
面向过程的思想:
class{
public static void main(String[] args){
//打开冰箱门
open();
//将大象放进去
put();
//关闭冰箱门
close();

}

open(){...}
put(){....}
close(){...}
}

面向对象的思想:将大象装进冰箱
1、有哪些类?
1)使用UML来分析
2)名词提取法 大象 冰箱 测试类
2、类中都有些什么?
大象类:进入冰箱的方法
冰箱类:打开冰箱门,关闭冰箱门
3、类和类之间的关系是什么?
在测试类中调用冰箱类中的方法,以及调用大象类中的方法
伪代码实现:
创建一个大象类:
class Elephant{
put(){...}
}
创建一个冰箱类:
class IceBox{
open(){...}
close(){...}
}
创建一个测试类:
class Test{
public static void main(String[] args){
冰箱调用open的方法
大象调用put方法
冰箱调用close方法
}
}

4、面向对象开发
就是不断的创建对象,使用对象,指挥对象做事情。

5、面向对象设计
其实就是在管理和维护对象之间的关系。

6、面向对象特征
封装(encapsulation)
继承(inheritance)
多态(polymorphism)

二、面向对象的实现

面向对象的实现:
1、世间万物皆为对象(一个水杯,一个桌子,一台电脑。。)
都可以从两个方面去描述(属性,行为)
人 ---> class Person
属性:姓名,年龄,身高,体重,性别,... 成员变量:name,age,high,gender
行为:吃饭,睡觉,打游戏,敲代码,.... 成员方法:eat(),sleep(),...

2、对象和类的关系(简单理解为对象是类的具体实例)
一个类可以创建出多个对象

                                   一个对象初始化的过程

三、面向对象的好处与弊端

好处:

1. 模块化:面向对象的编程方式将代码组织成一系列相互关联的对象,每个对象都承担着特定的责任。这种模块化的结构使得代码更加清晰、可读性更强,并且容易进行维护和重用。

2. 封装性:封装是面向对象编程的一个核心概念,它指的是将数据和操作数据的方法封装在一个对象中。通过封装,我们可以隐藏对象内部的具体实现细节,只提供对外部接口进行交互,从而提高了代码的安全性和可靠性。

3. 继承性:继承允许我们定义一个新的类(子类),并且可以重用已有类(父类)的属性和方法。这样可以减少代码的冗余,提高代码的复用性和可维护性。同时,继承也支持多态性,即一个对象可以具备多种形态,提供了更大的灵活性和扩展性。

4. 多态性:多态性是指同一个方法可以根据不同的对象执行不同的行为。通过多态性,我们可以编写出更通用的代码,降低了代码的耦合度,增加了代码的灵活性和可扩展性。

5. 可维护性:面向对象编程具备良好的可维护性。由于面向对象的代码结构清晰、模块化,当需求变更或者出现 bug 时,我们只需要关注特定的类或对象,而不用修改整个程序。这种高内聚低耦合的特性使得代码的维护更加容易。

6. 可拓展性:面向对象编程提供了良好的拓展性,通过添加新的类和对象可以快速扩展系统的功能。同时,面向对象编程也支持设计模式等技术,进一步提高了系统的可拓展性和灵活性。 总而言之,面向对象编程的好处包括模块化、封装性、继承性、多态性、可维护性和可拓展性。这些特性使得面向对象编程成为一种强大且广泛应用的编程范式。

弊端:

1. 学习曲线:相对于其他编程范式,如过程式编程,面向对象编程需要更多的学习和理解。理解面向对象的概念、原则和设计模式可能需要更多的时间和努力。

2. 复杂性:面向对象编程通常涉及多个类、对象和关系的交互。这种复杂性可能导致代码结构变得复杂,使得项目难以理解和维护。尤其在大型项目中,面向对象的复杂性可能会增加开发和调试的难度。

3. 性能开销:与一些其他编程范式相比,面向对象编程可能会带来一定的性能开销。由于对象之间的交互通常通过方法调用实现,而不是简单的函数调用,这可能导致额外的开销和延迟。

4. 过度使用继承:继承是面向对象编程中的一个重要概念,但过度使用继承可能导致继承层次的复杂性增加,代码的可读性和可维护性降低。此外,错误的继承关系可能导致设计上的问题。

5. 耦合性:面向对象编程中,对象之间的依赖关系较强。这种强耦合性可能会限制代码的灵活性和扩展性,使得修改一个类可能需要同时修改其他相关类。

6. 内存消耗:面向对象编程通常需要在运行时创建和管理许多对象。这可能导致内存消耗较大,尤其是对于某些资源有限的环境或嵌入式系统来说。

 

posted @   SIKeborn  阅读(17)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
点击右上角即可分享
微信分享提示