Java 程序设计案例教程 课件 第5章 面向对象(上)_第1页
Java 程序设计案例教程 课件 第5章 面向对象(上)_第2页
Java 程序设计案例教程 课件 第5章 面向对象(上)_第3页
Java 程序设计案例教程 课件 第5章 面向对象(上)_第4页
Java 程序设计案例教程 课件 第5章 面向对象(上)_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

面向对象(上)目录/CONTENTS01OOP思想与范式跃迁02类与对象:蓝图与实例03构造方法:对象出生的仪式感04this关键字:当前对象的自画像05变量作用域与生命周期06方法:行为封装与消息传递目录/CONTENTS07静态成员:类级别的共享资产08综合案例:学生管理系统面向对象概述01对象与类:现实到代码的抽象OOP定义面向对象编程(OOP)是一种以对象为核心的编程范式,将现实世界中的事物抽象为具有属性和行为的对象,通过对象之间的交互实现程序逻辑。对象示例现实中的‘猫’是对象,具有颜色、体重等属性,以及进食、奔跑等行为。对象是现实事物的数字化映射,是程序的基本单元。类的抽象将所有‘猫’的共同特征提炼成模板,形成‘猫类’。类是对象的‘模板’或‘蓝图’,定义了一类对象共有的属性和方法。属性与方法属性是类或对象的状态特征,如‘学生’类中的姓名、年龄;方法是类或对象的行为操作,如学习、考试。属性和方法共同构成对象的完整描述。封装:把秘密锁进保险箱封装的实现通过将成员变量设置为private,并提供public的getter和setter方法,可以实现封装。封装的好处封装可以隐藏实现细节,保护数据安全,同时提供灵活的接口供外部访问。继承:代码复用的家族树继承的定义继承允许子类继承父类的属性和方法,实现代码复用。继承的注意事项继承应该遵循is-a关系,避免滥用继承导致代码脆弱。多态:同一接口万千形态多态的实现通过方法重写和接口实现,多态允许不同对象对同一方法调用有不同的响应。多态的好处多态提高了代码的灵活性和扩展性,允许在不修改现有代码的情况下添加新功能。抽象(Abstraction)定义抽象是面向对象编程中一种重要的概念,它强调提取出事物的本质特征和行为,忽略非关键的细节,以此来创建通用的模型或概念。关键要素抽象类抽象方法接口作用提高可扩展性增强可维护性实现多态性从POP到OOP:编程思维的跃迁POP与OOP的比喻面向过程编程(POP)就像按照菜谱一步步做菜,每一步骤都清晰定义。而面向对象编程(OOP)则像是把整个厨房交给一位智能厨师,厨师会根据需求自动完成任务。POP的局限性随着软件规模的扩大,POP在代码维护、复用和扩展性方面逐渐暴露出问题。代码的修改可能导致连锁反应,增加维护成本。OOP的核心优势OOP通过封装、继承、多态和抽象四大特性,将数据与行为打包,使代码更加模块化、可复用。它允许开发者像搭积木一样构建复杂的系统。四大特性与SOLID原则速览四大特性概览封装:隐藏数据细节,提供安全接口;继承:复用父类代码,建立层次结构;多态:同一接口,不同实现;抽象:提取通用行为,忽略细节。SOLID原则简介SOLID原则是面向对象设计的核心,包括单一职责原则、开闭原则、里氏替换原则、接口隔离原则和依赖倒置原则,它们帮助开发者写出更可维护、可扩展的代码。类与对象:蓝图与实例02类的定义:属性+行为的契约类的结构在Java中,类由成员变量(属性)和成员方法(行为)组成。成员变量描述对象的状态,成员方法定义对象的行为。访问修饰符的作用访问修饰符如public、private和protected用于控制成员变量和方法的访问权限,实现封装。封装是面向对象的核心特性之一,保护数据安全。Person类示例例如,Person类可以有name和age作为成员变量,以及setName、getName等方法。通过private修饰成员变量并提供public方法访问,实现封装。new的魔法:对象诞生全记录对象创建的步骤使用new关键字创建对象时,JVM会加载类、分配内存、默认初始化、显式初始化、调用构造方法赋值,最后返回对象引用。构造方法的作用构造方法用于初始化对象的成员变量。它的名称必须与类名一致,且没有返回值类型。构造方法在对象创建时自动调用。无参构造方法如果类中没有显式定义构造方法,编译器会自动生成一个无参构造方法。一旦定义了构造方法,编译器不再生成默认构造方法。构造方法的重载构造方法可以通过参数列表的不同进行重载,允许开发者根据需要选择合适的构造方法来初始化对象。对象使用与空指针陷阱对象的使用通过对象名和点号(.)可以访问对象的成员变量和调用成员方法。例如,person.setName("张三")和person.getName()。空指针异常如果尝试访问一个未初始化的对象(null),会导致NullPointerException。例如,Personperson=null;person.getName();构造方法:对象出生的仪式感03无参到重载:构造方法的多重形态无参构造方法无参构造方法是编译器自动生成的默认构造方法,用于创建对象时提供默认初始化。构造方法的重载可以通过定义多个构造方法,使它们的参数列表不同,从而实现构造方法的重载。this()的使用在构造方法中,可以使用this()调用同一类中的其他构造方法,但必须位于构造方法的第一行。this()与super()的生死竞速构造方法的调用顺序在子类的构造方法中,必须首先调用父类的构造方法(super()),以确保父类部分正确初始化。this()与super()的限制this()和super()必须位于构造方法的第一行,且不能同时出现在同一个构造方法中。this关键字:当前对象的自画像04this的三重身份:区名、调链、传参解决命名冲突this关键字用于区分成员变量与局部变量。例如,在setName方法中,表示成员变量,而name表示局部变量。调用其他构造方法在构造方法中,可以使用this()调用同一类中的其他构造方法,提高代码复用性。作为参数传递this可以作为参数传递给其他方法或构造方法,表示当前对象。静态世界没有this静态方法与this静态方法属于类本身,不依赖于对象实例。因此,在静态方法中不能使用this关键字,因为this指向对象实例。变量作用域与生命周期05成员变量:对象级状态仓库实例变量实例变量属于对象,每个对象都有自己的实例变量副本。它们存储在堆内存中,随对象的创建而存在,随对象的销毁而消失。类变量类变量(static修饰)属于类本身,所有对象共享同一个类变量。它们存储在方法区,随类的加载而存在,随类的卸载而消失。局部变量:栈帧里的临时工局部变量的生命周期局部变量定义在方法、构造方法或代码块中,其生命周期仅限于所在的块内。方法执行完毕后,局部变量被销毁。局部变量的初始化局部变量没有默认值,必须在使用前显式初始化。否则,编译时会报错。方法:行为封装与消息传递06方法签名:代码世界的API方法签名的组成方法签名由方法名和参数列表组成。参数列表包括参数类型、参数名和参数个数。方法签名用于区分同名方法。方法重载方法重载允许在同一个类中定义多个同名方法,只要它们的参数列表不同。编译器根据参数列表选择合适的方法。值传递:基本类型的photocopy值传递的特性对于基本数据类型,方法参数传递是值传递。方法内部对参数的修改不会影响原始变量的值。引用传递:对象引用的photocopy引用传递的特性对于引用数据类型,方法参数传递是引用传递。方法内部对对象的修改会影响原始对象。引用传递的注意事项虽然传递的是引用的副本,但副本和原始引用指向同一个对象。因此,对对象的修改是可见的。静态成员:类级别的共享资产07static变量:全局唯一的数据岛静态变量的特性静态变量属于类本身,所有对象共享同一个静态变量。它们在类加载时初始化,存储在方法区。静态变量的访问静态变量可以通过类名直接访问,无需创建对象实例。例如,Student.totalStudents。static方法:工具箱里的螺丝刀静态方法的特性静态方法属于类本身,可以通过类名直接调用,无需创建对象实例。静态方法的限制静态方法只能访问静态变量和调用静态方法,不能直接访问实例变量和实例方法。静态代码块:类加载时的一次性剧本静态代码块的作用静态代码块在类加载时执行,且只执行一次。通常用于初始化静态变量。静态代码块的执行时机静态代码块在主方法之前执行,确保类加载时完成必要的初始化操作。综合案例:学生管理系统8学生管理系统案例需求:设计一个简单的学生管理功能,支持:创建学生对象(包含学号、姓名、年龄、班级等属性);查看学生的完整信息;修改学生的年龄和班级;统计全校学生的总人数(用静态变量实现)。学生管理系统实现思路:(1)学生类(Student)——核心实体类该类封装了学生的属性(学号、姓名等)和方法(查看信息、修改属性等),同时使用静态变量统计总人数,。(2)测试类(StudentTest)——调用学生类的功能该类通过创建Student

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论