第章面向对象编程基础ppt课件.ppt_第1页
第章面向对象编程基础ppt课件.ppt_第2页
第章面向对象编程基础ppt课件.ppt_第3页
第章面向对象编程基础ppt课件.ppt_第4页
第章面向对象编程基础ppt课件.ppt_第5页
已阅读5页,还剩60页未读 继续免费阅读

下载本文档

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

文档简介

Java语言程序设计 一 串讲 主讲人 面向对象编程基础 本部分重点JAVA语言的类对象继承多态接口JAVA小应用程序基础 世界是由什么组成的 面向对象编程基础 对象的特征 属性 属性 对象具有的各种特征每个对象的每个属性都拥有特定值例如 王小红和朱小雨的体重不一样 60kg 王小红 属性 35岁 对象的特征 方法 方法 对象执行的操作 打单 收银 方法 刷卡 封装 对象同时具有属性和方法两项特性对象的属性和方法通常被封装在一起 共同体现事物的特性 二者相辅相承 不能分割 谁看见过只有 完好的零件和颜色 而不能开动的汽车 类 从对象抽取出类 顾客类轿车类 类是模子 确定对象将会拥有的特征 属性 和行为 方法 类是对象的类型不同于int类型 具有方法 各种口味的球状冰淇淋 球状冰淇淋模子 类和对象有什么区别呢 类是抽象的概念 仅仅是模板 比如说 人 对象是一个你能够看得到 摸得着的具体实体 比如 小布什 小布什 普京 克林顿 Java是面向对象的语言 所有Java程序都以类class为组织单元关键字class定义自定义的数据类型 publicclassHelloWorld publicstaticvoidmain String args System out println 使用Java语言理解程序逻辑 Java类模板 类将现实世界中的概念模拟到计算机程序中 publicclass类名 定义属性部分属性1的类型属性1 属性2的类型属性2 属性n的类型属性n 定义方法部分方法1 方法2 方法m 定义类 定义一个类的步骤1 定义类名2 编写类的属性3 编写类的方法 常见错误 publicclass Book StringbookName StringauthorName intpageNum booleanisAvailable 类命名规则 1 不能使用Java关键字2 首字母可以为字母 也可以是 或 建议不要这样 3 不能包含空格或 号 代码错误 如何创建和使用对象 使用对象的步骤 使用new创建类的一个对象使用对象 使用 进行以下操作给类的属性赋值 对象名 属性调用类的方法 对象名 方法名 Schoolcenter newSchool center schoolName 北京大学 给属性赋值center toString 调用类的方法 该方法中的操作将被执行 面向对象 OO 的优点 便于程序模拟现实世界中的实体用 类 表示实体的特征和行为隐藏细节对象的行为和属性被封装在类中 外界通过调用类的方法来获得 不需关注内部细节如何实现可重用可以通过类的模板 创建多个类的对象 数据类型总结 intdoublechar String使用class定义的类型StudentTeacherSchool 基本数据类型 引用数据类型 数据类型使用区别 类的方法 写出狮子对象的 跑 方法写出狮子对象的 叫 方法 电动玩具狮子属性 颜色 黄色行为 跑叫 按此按钮 狮子开始跑 如何定义类的方法 类的方法定义类的某种行为 或功能 方法的名称 方法的主体 方法返回的数据类型 定义类的方法 public返回值类型方法名 这里编写方法的主体 步骤一 定义方法名以及返回值 步骤二 编写方法体 方法的命名 如何给方法起名字 必须以字母 或 开头可以包括数字 但不能以它开头遵循的命名规范通常方法名是一个动词 如果有两个以上单词组成 第一个单词的首字母小写 其后单词首字母大写 方法的返回值 两种情况如果方法具有返回值 方法中必须使用关键字return返回该值 返回类型为该返回值的类型如果方法没有返回值 返回类型为void publicclassStudent Stringname 张三 publicvoidgetName returnname 返回类型要匹配 return表达式 编译错误 常见错误 publicclassSchool publicstaticvoidmain String args return 北京大学 返回类型是void方法中不能有返回值 常见错误 publicclassStudent publicdoublegetInfo doubleweight 95 5 doubleheight 1 69 returnweight height 方法至多可以返回一个值 不能返回多个值 方法调用 方法是个 黑匣子 完成某个特定的应用程序功能 并返回结果方法调用 执行方法中包含的语句 对象名 方法名 方法调用小结 方法之间允许相互调用 不需要知道方法的具体实现 提高了效率 变量作用域 变量声明的位置决定变量作用域变量作用域确定可在程序中按变量名访问该变量的区域 for inti 0 a 0 i 4 i a System out println a a的作用域仅在for循环中 代码错误 变量作用域 变量1类型变量1 变量2类型变量2 变量3类型变量3 public返回类型方法1 变量4类型变量4 public返回类型方法2 变量5类型变量5 publicclassAutoLion AutoLion类的方法别的类的方法 谁能使用这些变量 方法1 方法2 成员变量 局部变量 局部变量 面向对象的编程思维 ScoreCalc类和Test类 publicstaticvoidmain String args Scannerinput newScanner System in System out print 请输入Java成绩 intjava input nextInt 计算并显示输出 inttotal java c db doubleavg total 3 System out print 总成绩 total System out print n平均分 avg 一次还可以接受 如果还要再执行这个功能 难道还要重复再写 什么是封装 publicclassTeacher2 privateStringname 教员姓名 返回教员姓名publicStringgetName returnname 设定教员姓名publicvoidsetName Stringname this name name 封装 就是隐藏实现细节将属性私有化 提供公有方法访问私有属性通过这些公有方法访问私有属性 Teacher2teacher newTeacher2 teacher setName 李芳 StringtName teacher getName 通过setter getter方法访问name属性 this代表当前类的实例 29 如何实现封装 封装的实现 1 修改属性的可见性来限制对属性的访问2 为每个属性创建一对赋值 setter 方法和取值 getter 方法 用于对这些属性的访问3 在setter和getter方法中 加入对属性的存取限制 publicclassTeacher3 privateStringname 教员姓名privateintage 年龄publicintgetAge returnage publicvoidsetAge intage if age 22 System out println 错误 最小年龄应为22岁 this age 22 如果不符合年龄要求 则赋予默认值 else this age age 此处省略对name属性的setter getter方法 1 2 3 30 如何实现封装 publicclassTeacher3Test publicstaticvoidmain String args AccpTeacher3teacher newAccpTeacher3 teacher setName 李芳 teacher setAge 10 System out println teacher introduction 使用封装 增加了数据访问限制 增强了程序的可维护性 错误 最小年龄应为22岁 大家好 我是李芳 我今年22岁 测试类通过调用setter方法 为对象的各个属性赋值 31 什么是构造方法 构造方法负责对象成员的初始化工作 为实例变量赋予合适的初始值构造方法必须满足以下语法规则 1 方法名与类名相同2 没有返回类型 publicclassTeacher5 privateStringname 教员姓名 构造方法publicTeacher5 name 无名氏 PublicTeacher5Test publicstaticvoidmain String args Teacher5teacher newTeacher5 使用new关键字调用构造方法 32 带参数的构造方法 通过带参数的构造方法 显式地为实例变量赋予初始值 publicclassTeacher6 privateStringname 教员姓名privateintage 年龄privateStringeducation 学历privateStringposition 职位 带参数的构造方法PublicTeacher6 StringpName intpAge StringpEducation StringpPosition name pName age pAge 可以增加对age等属性的存取限制条件education pEducation position pPosition publicStringintroduction return 大家好 我是 name 我今年 age 岁 学历 education 目前职位是 position 33 带参数的构造方法 通过调用带参数的构造方法 简化对象初始化的代码 publicclassTeacher6Test publicstaticvoidmain String args Teacher6teacher newTeacher6 李芳 23 本科 咨询师 System out println teacher introduction 创建对象时 一并完成了对象成员的初始化工作 大家好 我是李芳 我今年23岁 学历本科 目前职位是咨询师 34 生活中的方法重载 类 方法 方法参数 方法实现 司机 轿车 巴士 火车 驾驶 启动 行驶 等待乘客上车 启动 行驶 到站停车 正点发车 行驶 到站停车 如果用代码实现 我们需要三个方法 这些方法的方法名称相同 参数类型不同 35 方法重载必须满足的条件 重载方法必须满足以下条件 方法名相同 方法的参数类型 个数 顺序至少有一项不相同 方法的返回类型可以不相同 方法的修饰符可以不相同 调用重载方法时 Java使用参数的类型和数量决定实际调用重载方法的哪个版本 36 方法重载的代码示例1 方法重载并不陌生java io PrintStream类的println方法能够打印数据并换行 根据数据类型的不同 有多种实现方式 publicclassTest publicstaticvoidmain String args inti 0 charc z Stringstr hello System out println i System out println c System out println str PrintStream println int println char println String 方法名相同 参数类型不同 调用不同的println方法 方法重载 37 生活中的继承 生活中 继承的例子随处可见 动物 食草动物 食肉动物 谁是父类 谁是子类 能说出继承的特点吗 继承需要符合的关系 is a 父类更通用 子类更具体 38 生活中的继承 子类具有父类的一般特性 包括属性和行为 以及自身特殊的特性 巴士是汽车吗 卡车是汽车吗 出租车是汽车吗 汽车 39 为什么要使用继承 使用继承 可以有效实现代码复用 40 如何实现继承 在Java语言中 用extends关键字来表示一个类继承了另一个类 例如 publicclassJavaTeacher2extendsTeacher 其余代码省略 在父类中只定义一些通用的属性与方法 例如 publicclassTeacher privateStringname 教员姓名privateStringschool 所在中心publicAccpTeacher StringmyName StringmySchool 初始化属性值 publicvoidgiveLesson 授课方法的具体实现 publicvoidintroduction 自我介绍方法的具体实现 41 如何实现继承 子类自动继承父类的属性和方法 子类中可以定义特定的属性和方法 publicclassTeacher privateStringname 教员姓名privateStringschool 所在中心publicAccpTeacher StringmyName StringmySchool 初始化属性值 publicvoidgiveLesson 授课方法的具体实现 publicvoidintroduction 自我介绍方法的具体实现 publicclassJavaTeacher2extendsTeacher publicAccpJavaTeacher2 StringmyName StringmySchool super myName mySchool publicvoidgiveLesson System out println 启动Eclipse super giveLesson 由于giveLesson 方法与父类的实现有所不同 因此重写了该方法 方法重写 子类和父类的方法具有相同的名称 参数列表 返回类型 父类中的属性和方法可以被子类继承 42 publicclassJavaTeacher2extendsTeacher PublicJavaTeacher2 StringmyName StringmySchool super myName mySchool 如何实现继承 子类的构造方法中 通过super关键字调用父类的构造方法 方法重写后 通过super关键字调用父类的方法 publicclassJavaTeacher2extendsTeacher publicvoidgiveLesson System out println 启动Eclipse super giveLesson 通过调用父类的构造方法 完成对属性值的初始化 43 一切类的 祖先 Object 在Java中 所有的Java类都直接或间接地继承了java lang Object类 publicclassMyObject publicclassMyObectextendsObject 在Eclipse中调用MyObject对象的成员 会自动弹出继承自Object的所有方法 44 什么是多态 简单来说 多态是具有表现多种形态的能力的特征同一个实现接口 使用不同的实例而执行不同操作 彩色打印机 打印机 黑白打印机 打印效果 彩色 打印效果 黑白 打印 打印 45 publicclassTeacher publicvoidgiveLesson System out println 知识点讲解 System out println 总结提问 如何实现多态 1 子类重写父类的方法2 编写方法时 使用父类定义的方法3 运行时 根据实际创建的对象类型动态决定使用哪个方法 46 什么是Java接口 一个Java接口是一些方法特征的集合 但没有方法的实现 publicinterfacePCI publicvoidstart publicvoidstop classSoundCardimplementsPCI publicvoidstart System out println Dudu publicvoidstop System out println Soundstop Java接口中定义的方法在不同的地方被实现 可以具有完全不同的行为 这是Java接口 相当于主板上的PCI插槽的规范 classNetworkCardimplementsPCI publicvoidstart System out println Send publicvoidstop System out println Networkstop 47 什么是Java接口 publicclassAssembler publicstaticvoidmain String args PCInc newNetworkCard PCIsc newSoundCard nc start sc start 可以使用Java接口标识类型运行时 根据实际创建的对象类型调用相应的方法实现 Dudu Send 控制台输出 2 1 48 多态与接口的区别 相同点 都是为了实现程序的可扩展和可维护性 不同点 多态 指实现同一个接口 使用不同的实例而执行不同的操作 必须存在继承关系 接口 存在共同的方法特征 但对方法有各自不同的实现 不必存在继承关系 this关键字 用于任何实例方法内 指向当前对象this的值指向对其调用当前方法的对象this关键字可在需要当前类类型的对象引用时使用 this关键字的示例 classPixel intx inty voidinit intx inty this x x this y y publicstaticvoidmain Stringargs Pixelp newPixel p init 4 3 什么是常量 常量是一种标识符 它的值在运行期间恒定不变常量标识符在程序中只能被引用 而不能被重新赋值 Java中常量的定义规则 加入final关键字代表常量 加入static关键字代表类变量尽量使用含义直观的常量来表示那些将在程序中多次出现的数字或字符串 publicclassStudent publicstaticfinalintFEMALE 1 代表女性publicstaticfinalintMALE 2 代表男性privateintsex 性别publicvoidsetSex intsex if sex FEMALE System out println 这是一名女学生 elseif sex MALE System out println 这是一名男学生 this sex sex 在Java接口中声明常量 在Java接口中声明的变量在编译时会自动加上staticfinal的修饰符 即声明为常量 因而Java接口通常是存放常量的最佳地点 publicint

温馨提示

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

评论

0/150

提交评论