已阅读5页,还剩27页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
上节课内容提问,内容提问,Java面向对象设计1,本课内容,面向对象的思想类、属性和方法对象的创建和使用构造方法重载,1.面向对象的基本概念,OOP:ObjectOrientedProgramming,是目前主流的程序设计语言,传统的编程技术是结构化、面向过程的OOP是对现实世界运行方式的模拟,按人们思维习惯来描述问题、解决问题对象(object)和类(class)是面向对象方法的核心概念类是对相同或相似事物的一种抽象,描述了一类事物的共同特征对象是实际存在的某类事物的个体,也称之为类的实例(instance),对象(Object),对象是对现实世界中事物的建模,拥有状态和行为(Anobjectisasoftwarebundleofrelatedvariablesandmethods)状态-成员变量,行为-成员方法,variablesmakeupthecenterMethodssurroundandhidetheobjectsnucleusfromotherobjectsprovidemodularityandinformationhidingbenifits,类(Class),类是对相似行为的对象的一种抽象,描述了属于该类型的所有对象的性质-统一的属性和操作方式(Aclassisablueprintorprototypethatdefinesthevariablesandthemethodscommontoallobjectsofacertainkind)类就是对象的数据类型,对象是类的实例Fruitapple,grape;从一个类可以创建多个对象,这些对象具有相同的行为,但各自拥有自身的状态,以对象思考问题,以面向对象的思维来思考一个问题的解答时,会将与问题相关的种种元素视为一个个对象,简单地说,面向对象的思维就是以对象为中心来思考问题,然而什么又叫做以以对象为中心来思考问题”呢?我不想用太多抽象的字眼来解释这些词语,这里提出一个实际问题,并尝试以面向对象的方式来思考有一个账户,账户中有存款余额,您可以对账户进行存款与提款的动作,并可以查询以取得存款余额。要以对象为中心来思考问题,首先要识别出问题中的对象,以及对象上的属性与可操作的方法。,识别问题中的对象与属性,账户是一个比较单纯的问题,可以从问题中出现的名词来识别出对象,描述中有账户与余额两个名称,基本上这两个名称都可以识别成对象,当然在这个简单的问题当中,我们先识别账户这个对象。识别出对象后,接下来我们看看对象上有什么属性(Property),像对象上拥有什么特征或是可表示的状态.属性是对象的静态特征,属性基本上也可以从名词上识别,在这个例子中,您可以将余额作为账户的属性之一。,账户,账户余额,识别对象上的方法,接着要识别对象上的方法,也就是对象上的动态特征,即对象可以“干什么”,用我们专业的话说就是对象本身可操作或供操作的接口。根据描述“存款”、“提款”、“余额查询”可以识别为方法,账户,存款余额,存款提款查询余额,练习:Car.javaUseCar.java什么是类和对象、属性和方法的定义、类的实例化、类成员的访问,类和对象之间的关系,类不是对象(却是用来创建它们的模型)类是对象的蓝图,它告诉虚拟机如何创建某种类型的对象。,Java虚拟机,类,如何获得对象?,调用类的构造函数创建对象,类的构造函数,创建一个个对象,虚拟机,定义构造函数,与类名称同名的方法称为构造函数,它没有返回值。构造函数的作用就是让您在构造对象实例的同时初始化一些必要信息,构造函数在创建对象实例的时候被调用。构造函数有无参和有参两种形式系统默认提供一个无参的构造函数。一旦您定义一个有参的构造函数,系统不再提供默认的构造函数,对象的产生和使用,创建对象实例的根本途径是构造器,通过new关键字来调用某个类的构造器即可创建这个类的实例/定义一个Person类型的变量Personp;/通过new关键字调用Person类的构造器,返回一个Person实例,将该Person实例赋给p变量。p=newPerson();,对象、引用,有这样一行代码p=newPerson();这行代码创建一个Person实例,这个实例在堆内存里。在java中,通过new运算符创建出的对象,都被放入到堆内存里.,Personp;,p,栈内存,p=newPerson();,name,age,堆内存,通过new关键字生成的对象存放在堆内存里,对象引用,java不允许直接操作内存,所以我们无法直接操作堆内存里的对象,如果想要操作对象,必须通过引用Personp=newPerson();,引用,可以通过引用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,操作符=/equals1、=比较的是地址(否是同一个对象),如果是具体的阿拉伯数字的比较(基本数据类型),值相等则为TRUE,如:inta=10与longb=10L与doublec=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.java2.解决局部变量和成员变量名称相同的问题DemoThis.java,类的初始化顺序,顺序:类变量构造方法普通方法练习:OrderOfInitialization.java,课后作业,第1题:编译、运行本课例题;第2题:编写一个student类,有学号、姓名、年龄等属性。要求提供一到多个构造方法,成员变量的设置、访问方法,第3题:编写一个test类,对student类进行第4题:编
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年度科研仪器租赁及技术服务合同
- 2024年定制:5G网络技术研发与技术服务合同
- 2024合作开发合同的开发内容和合作方式
- 04版加工承揽合同生产工艺与质量控制
- 2024年度校园租赁:电动自行车合同
- 2024光电子技术研发与生产合同
- 2024广州市劳动合同范文新版
- 2024营业租赁合同范文
- 2024年度电力设备安装与维护合同
- 2024年度计算机软件开发与销售合同
- DB41T 2280-2022 路桥用泡沫轻质土应用技术规程
- 公共卫生主题培训
- 广东省特种设备作业人员考试机构申请表
- 第三章-自然语言的处理(共152张课件)
- 分布式光伏系统组件缺陷检测及诊断技术规范
- 企业网站建设及维护服务合同
- 北师版八年级数学上册 第四章 一次函数(压轴专练)(十大题型)
- 住院医师规范化培训教学病例讨论教案(模板)
- 2023年合肥市轨道交通集团有限公司招聘笔试真题
- 2024年安全教育培训变更新增记录
- 国开2024年秋《经济法学》计分作业1-4答案形考任务
评论
0/150
提交评论