




已阅读5页,还剩27页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
上节课内容提问,内容提问,Java面向对象设计1,本课内容,面向对象的思想 类、属性和方法 对象的创建和使用 构造方法 重载,1. 面向对象的基本概念,OOP: Object Oriented Programming,是目前主流的程序设计语言,传统的编程技术是结构化、面向过程的 OOP是对现实世界运行方式的模拟,按人们思维习惯来描述问题、解决问题 对象(object)和类(class)是面向对象方法的核心概念 类是对相同或相似事物的一种抽象,描述了一类事物的共同特征 对象是实际存在的某类事物的个体,也称之为类的实例(instance),对象(Object),对象是对现实世界中事物的建模,拥有状态和行为(An object is a software bundle of related variables and methods) 状态成员变量,行为成员方法,variables make up the center Methods surround and hide the objects nucleus from other objects provide modularity and information hiding benifits,类(Class),类是对相似行为的对象的一种抽象,描述了属于该类型的所有对象的性质-统一的属性和操作方式(A class is a blueprint or prototype that defines the variables and the methods common to all objects of a certain kind) 类就是对象的数据类型,对象是类的实例 Fruit apple, grape; 从一个类可以创建多个对象,这些对象具有相同的行为,但各自拥有自身的状态,以对象思考问题,以面向对象的思维来思考一个问题的解答时,会将与问题相关的种种元素视为一个个对象,简单地说,面向对象的思维就是以对象为中心来思考问题,然而什么又叫做以“以对象为中心来思考问题”呢?我不想用太多抽象的字眼来解释这些词语,这里提出一个实际问题,并尝试以面向对象的方式来思考 有一个账户,账户中有存款余额,您可以对账户进行存款与提款的动作,并可以查询以取得存款余额。 要以对象为中心来思考问题,首先要识别出问题中的对象,以及对象上的属性与可操作的方法。,识别问题中的对象与属性,账户是一个比较单纯的问题,可以从问题中出现的名词来识别出对象,描述中有“账户“与“余额“两个名称,基本上这两个名称都可以识别成对象,当然在这个简单的问题当中,我们先识别“账户“这个对象。 识别出对象后,接下来我们看看对象上有什么属性(Property),像对象上拥有什么特征或是可表示的状态.属性是对象的静态特征,属性基本上也可以从名词上识别,在这个例子中,您可以将“余额“作为账户的属性之一。,账户,账户余额,识别对象上的方法,接着要识别对象上的方法,也就是对象上的动态特征,即对象可以“干什么”,用我们专业的话说就是对象本身可操作或供操作的接口。根据描述“存款”、“提款”、“余额查询”可以识别为方法,账户,存款余额,存款 提款 查询余额,练习:Car.java UseCar.java 什么是类和对象、属性和方法的定义、 类的实例化、类成员的访问,类和对象之间的关系,类不是对象 (却是用来创建它们的模型) 类是对象的蓝图,它告诉虚拟机如何创建某种类型的对象。,Java虚拟机,类,如何获得对象 ?,调用类的构造函数创建对象,类的构造函数,创建一个个对象,虚拟机,定义构造函数,与类名称同名的方法称为构造函数,它没有返回值。构造函数的作用就是让您在构造对象实例的同时初始化一些必要信息,构造函数在创建对象实例的时候被调用。构造函数有无参和有参两种形式 系统默认提供一个无参的构造函数。 一旦您定义一个有参的构造函数,系统不再提供默认的构造函数,对象的产生和使用,创建对象实例的根本途径是构造器,通过new关键字来调用某个类的构造器即可创建这个类的实例 / 定义一个Person类型的变量 Person p; / 通过new关键字调用Person类的构造器,返回一个Person实 例,将该Person实例赋给p变量。 p = new Person();,对象、引用,有这样一行代码p = new Person();这行代码创建一个Person实例,这个实例在堆内存里。在java中,通过new运算符创建出的对象,都被放入到堆内存里.,Person p;,p,栈内存,p = new Person();,name,age,堆内存,通过new关键字生成的对象存放在堆内存里,对象 引用,java不允许直接操作内存,所以我们无法直接操作堆内存里的对象,如果想要操作对象,必须通过引用 Person p = new Person();,引用,可以通过引用p来操作 对象上的方法 p.setName(“张三“),对象,引用,对象、引用,当一个对象被创建后,这个对象将保持在堆内存,Java程序不允许直接访问堆内存的对象,只能通过引用访问。 如果堆内存里的对象没有任何引用指向它,这个对象也就成了垃圾,Java的垃圾回收机制将回收该对象,释放该对象所占的内存. 因此,如果希望通知垃圾回收机制回收某个对象,只需要切断该对象的所有引用变量和它之间的关联即可,也就是把这些引用设为null,构造方法,特征 1. 与类同名,用new 调用 2. 构造器没有任何返回类型,哪怕是void也不行。假如指定了返回值,那么Java会视为一个普通的方法。 3只要类中显式地定义一个或多个构造器,那么Java不会再为你定义一个默认的构造器,new 关键字,new 关键字的作用: (1)为该对象分配内存空间; (2)返回该内存空间的引用,返回首 地址;(引用是指指针的别名) (3)调用构造函数,构造函数自动将成员赋初值。,练习,1、定义一个类Person此类有成员属性:name,age,sex,有说话say() ,吃饭eat() 行为要求说话的内容是:“我叫 name 男 年龄:age “吃饭eat() 说:“我爱吃水果“ 定义Test测试类,调用say,eat(), 提示: a.定义拥有参数的构造方法初始化成员属性, b.如果系统不允许提供有参构造,程序如果实现,操作符:= ,= ,equals使用,操作符= 基本数据类型是传植 对象是改变其引用 Assignment.java,操作符=/equals,操作符=/equals 1、= =比较的是地址(否是同一个对象),如果是具体的阿拉伯数字的比较(基本数据类型),值相等则为TRUE, 如:int a=10 与 long b=10L 与 double c=10.0都是相同的(为true),因为他们都指向地址为10的堆栈; 2、String的equals()方法比较的是两个String对象的内容是否一样 Equivalence.java,重载(Overload)方法,java允许一个类中有多个同名的方法,只要形参列表不同就行,为什么要这样做,重载,重载 方法重载是让类以统一的方式处理不同类型数据的一种手段。Java的方法重载,就是在类中可以创建多个方法,它们具有相同的名字,但具有不同的参数和不同的定义。调用方法时通过传递给它们的不同个数和类型的参数来决定具体使用哪个方法, 这就是多态性。,方法重载,1.构造器重载 2.方法重载,构造器重载,是指同一个类中存在着若干个具有不同参数列表的构造函数。 这样,在创建该类的对象时,就可以根据不同的情况选择不同的构造函数,提高编程灵活性。,SimpleConstructor2 .java,重载特征,方法名相同 参数列表不同 在同一个类中 方法体不同,方法重载OverloadingOrder.java,重载练习,1.定义一个类Book,当我知道书的名字或书的价格的时候可以获得这本书,或我知道书的出版商和书名时也可以获得一本书。请用OO设计这个类,并测试。 2.一个矩形可用两个点表示,一个三角形可用三个点来表示,一个圆可用一个点和一个半径来表示。 请实现三个同名方法(calArea),分别计算给出的矩形、三角形和圆形的面积。矩形为Rect,三角形为Triangle,圆形为Circle(请注意大小写)。(每个点用x,y两个坐标表示,x坐标在前,y坐标在后).,This关键字,This 关键字的使用 1.在构建器里调用构建器 尽管可用this调用一个构建器,但不可调用两个。 构建器调用必须是我们做的第一件事情 Flower.java 2. 解决局部变量和成员变量名称相同的问题 DemoThis.java,类的初始化顺序,顺序: 类变量 构造方法 普通方法 练习:OrderOfInitialization.java,课后作业,第1题:编译、运行本课例题; 第2题:编写一个student类,有学号、姓名、年龄等属性。要求提供一到多个构造方法,成员变量的设置、访问方法, 第3题:编写一个test类,对student类进
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 动态系统理论视角下的语言发展模型-洞察及研究
- 供应链质量追溯技术发展-洞察及研究
- 2025年肝病诊断治疗方案制定模拟测试卷答案及解析
- 2025年眼科常见疾病诊治方案考察答案及解析
- 2025年康复护理师康复方案制定答案及解析
- 降本增效工作方案2025
- 2025年康复评定康复训练方案设计考题答案及解析
- 企业数字营销策划方案与效果评估
- 五年级语文课文预习教学方案
- 成幼儿园手工剪纸素材及教学指导方案
- 中国法律史-第一次平时作业-国开-参考资料
- 平行四边形的面积集体备课发言稿
- 大学美育(第二版) 课件 第八单元:建筑艺术
- 思想政治教育专业大学生职业生涯规划书
- 湘教版高一地理新教材《4.1水循环》公开课一等奖课件省赛课获奖课件
- 医院科研经费管理办法
- 2023年广州海洋地质调查局招聘社会在职人员高频考点题库(共500题含答案解析)模拟练习试卷
- 运用PDCA循环降低住院患者雾化吸入的不规范率品管圈成果汇报
- 感触最深的一件事七年级作文大全600字
- 中建二局“大商务”管理实施方案20200713(终稿)
- 现浇墩台身轴线偏位、全高竖直度检测记录表
评论
0/150
提交评论