五、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. 内存消耗:面向对象编程通常需要在运行时创建和管理许多对象。这可能导致内存消耗较大,尤其是对于某些资源有限的环境或嵌入式系统来说。
                    
                
                
            
        
浙公网安备 33010602011771号