版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第四章——面向对象一、函数和方法函数可以被称为方法,它是类的成员,与类的成员变量一起被封装在类中,并且在类中实现,刚开始,可以理解成必须在类中实现的函数。思考计算3,6,9的阶乘并输出结果。必须得先写出求3的阶乘的代码,然后再写出同样求阶乘的代码,只不过换成了6,然后再写出9的阶乘代码。写三遍。可以定义一个求阶乘的方法,然后分别调用这个方法并赋予不同的值,则不用再写三遍代码。演示。注意:main方法和jiecheng方法同时在一个类里,main方法是程序的入口,先到了main方法里再去查找和调用jiecheng方法。1、函数和方法的格式格式:<修饰符><返回值类型><方法名>(<参数>){方法代码;}注意1、修饰符一般为固定格式定义方法,所以为类方法或者静态方法,为static。2、返回值类型:假如函数中有返回的值,则注明返回值的类型,如int等,假如没有返回的值,则为void。3、方法名后面的括号里的参数指明了方法接受的外部输入,假如方法不接受外部的输入则为空。4、main方法必须没有返回值。2、有返回值函数格式:static返回值类型方法名(参数){方法;return返回值;}例用函数求一个矩形的面积。主方法:inta=juxing(3,5);System.out.println(a);juxing方法:staticint
juxing(int
x,inty){intz=x*y;returnz;}注意1、要是在主程序中有接受返回值的变量,则返回值和接受变量类型要一致。(short与int)2、主程序中可以没有接受变量。直接输出返回值。System.out.println(juxing(5,6))。3、return100;代表返回值就是100.无参数方法假如只是执行固定的语句,不需要外来的参数控制输出结果,可以不定义参数。例如:就是输出一句话。可以利用有返回值和无返回值的两种方法。演示例子返回值求阶乘。演示。3、递归方法如果一个方法在它的方法体内直接或间接的调用了它自己,则称为递归调用,也叫做自调用方法。例子用递归实现阶乘。注意:1、如何用递归的形式实现:x*(x-1)*(x-2)..*12、如何规定条件实现递归的中止,而不是一直死循环下去。面向对象在现实世界中的万物皆对象,同样应用于计算机语言中。思想上的改变,以后再设计程序不要再考虑过程而要把程序设计组成抽象成对象。必须理解面向对象的思想,为以后打基础。二、面向对象对象是系统中用来描述客观事物的一个实体,它是构成系统的一个基本单位。一个对象由一组属性和对这组属性进行操作的一组服务组成。everythingisanobject现实世界的对象:桌子、书、自行车、电视、狗、文件、表格、按钮、窗口。对象与对象之间的不同。对象包含两个特性状态:指对象本身的信息(内部信息/内部变量)行为:实现对信息的访问/对象的操作标志:代表对象的标识符手机的状态(按键、屏幕、听筒、摄像头),行为(打电话、发短信、照相)对象(object)状态变量(variables)行为方法(method)对象就是变量和相关方法的软件集合面向过程通过面向过程,能够很好的理解面向对象。注意:一个侧重的是过程,一个侧重的是对象。在面向过程的C中:在一个结构体中定义窗口的大小,位置,颜色,背景等属性,对窗口操作的函数与窗口本身的定义没有任何关系,而是面向对窗口操作的过程(方法),如HideWindow,MoveWindow,MinimizeWindow,这些函数都需要接受一个代表要被操作的窗口参数,是一种谓语与宾语的关系,其侧重的是谓语,也就是侧重过程。同样道理,面向对象的不同。定义窗口时,除了要指定在面向过程中规定的那些属性,如大小,位置,颜色,背景等外,还要指定该窗口可能具有的动作,如隐藏,移动,最小化等。这些函数被调用时,都是以某个窗口要隐藏,某个窗口要移动的语法格式来使用的,这是一种主语与谓语的关系。面向对象的三大特征封装
(Encapsulation)继承
(Inheritance)多态
(Polymorphism)理解面向对象我要去石家庄。面向过程:我开车,我踩油门,我过唐山,我过保定…….面向对象:我用车去石家庄。注意:车怎么去不关我事。所有去石家庄的方法和参数都都封装在车这个类里面。我不用关心车去石家庄的过程,只需调用车这个对象。考虑问题的方法在设计程序解决问题的时候,不再是考虑第一步要做什么,第二步要做什么,而是要把涉及该问题的范围中抽象出来几个对象,所有解决该问题的函数(方法)和属性(成员变量)都封装在类中,最后调用对象中的方法就可以。类和对象考虑:什么是眼镜。给眼镜下定义。大脑中对眼镜的概念就是对眼镜这类事物抽象出来的一个类,而这个类在现实中的存在就是对象。类在这里可以理解成种类,现实世界中,存在很多同类的对象,桌子、书、自行车。其实类可以称为对象的一个模板。类是对某一类事物的描述,是抽象的、概念上的定义;对象是实际存在的该类事物的每个个体,因而也称实例(instance)。汽车设计图为类,它包括了对要设计汽车的全部描述和方法。那么按照这个设计图纸所生产的汽车则为在该类下所产生的对象。类是对象的描述,对象是类的实例。注意:一个类可以产生多个对象,并且初始状态都一样,其中一个对象改变后,不会影响类;假如类改变则会影响所有由它产生的对象。例类职员姓名年龄工资显示姓名()显示年龄()领取工资()对象姓名=张三年龄=25工资=2000对象姓名=李四年龄=22工资=2200实例化类的定义classPerson{
intage; voidshout() {//假如在这里再定义一个intage,叫做局部变量。
System.out.println(“Iam“+age); }}age是类的属性,也叫类成员变量。shout是方法也叫类的成员函数。shout方法可以直接访问同一个类中的age变量,如果一个方法中有与成员变量同名的局部变量,该方法中对这个变量名的访问是局部变量,而不再是成员变量。定义类classperson{privateintid;privateintage=20;publicint
getage(returnage;)publicvoidsetage(inti){age=i;}publicint
getid(returnid;)}对象的产生用new关键字可以产生对象。(数组)Personp1=newPerson();定义一个狗的类成员变量成员变量在定义的时候可以初始化也可以不用。classcat{intcolor;Intage=2;}成员变量的作用域为整个类体。当一个对象被创建时,会对其中各种类型的成员变量自动进行初始化赋值。除了基本数据类型之外变量类型都是引用类型,如上面的Person及前面讲过的数组。演示---成员变量与局部变量区别定义成员变量,在main方法里打印出来。在main方法里定义一个局部变量,然后打印。演示变量初始化。对象的使用classTestPerson{ publicstaticvoidmain(String[]args) { Personp1=newPerson(); Personp2=newPerson(); p1.age=-30; p1.shout(); p2.shout(); }}演示对象的使用。注意必须使用new关键字来创建对象使用【对象名】.【成员变量名】来调用对象的成员变量。使用【对象名】.【方法名+参数】来调用对象的方法。同一类中的每个对象共享该类的方法。对象的生命周期对象的比较“==”运算符与equals()方法的区别(演示equals)构造方法演示构造函数。注意:TextPerson中的main方法并没有调用Person方法,但是却显示出来。注意其特点:它具有与类相同的名称;它不含返回值;它不能在方法中用return语句返回一个值注意!在定义构造方法时加了“void”,结果这个方法就不再被自动调用了。
并且,假如没有构造函数时,编译器会自动产生构造函数,只不过为空而已。publicPerson(){}注意可以利用定义有参数的构造方法来生成可以输入参数的对象。演示(有参数的构造方法)匿名对象有时候可以不用引用变量来指向对象,可以直接在创建对象后便调用其方法。例如把对象使用例子中的a.say改成:newPerson().say();由于没有引用变量,方法执行后便成垃圾。(1)如果一个对象只需一次方法调用。(2)将匿名对象作为实参传递给一个函数调用。同样演示对象的使用。类的封装性如果外面的程序可以随意修改一个类的成员变量,会造成不可预料的程序错误,就象一个人的身高,不能被外部随意修改,只能通过各种摄取营养的方法去修改这个属性。在定义一个类的成员(包括变量和方法)时,使用private关键字说明这个成员的访问权限,这个成员成了类的私有成员,只能被这个类的其他成员方法调用,而不能被其他的类中的方法所调用。实例定义另外一个类,然后调用上一个类的变量,改变上一个类成员变量的访问控制。(演示类的封装。注意:解释假如两个类都有main方法,则执行.java文件同名的类)注意:一个类中的成员变量和函数加修饰符。公共访问控制符-public:被所有类访问。私有访问控制符-private:被该类自身访问无修饰(友好变量/友好方法):容许类本身以及同一个包中所有类访问public(公共变量/公共方法)classA{
public
intx;
publicvoidprint(){…}}classB{ voidtest(){ Aa=newA();
a.x=100;
a.print(); }}private(私有变量/私有方法)classA{
private
intx;
privatevoidprint(){…}}classB{ voidtest(){ Aa=newA();
a.x=100;
a.print(); }}这样编译器会报错。无修饰(友好变量/友好方法)classA{
intx; voidprint(){…}}classB{ voidtest(){ Aa=newA();
a.x=100;
a.print(); }}通常将类的成员变量声明为private,再通过public的方法来对这个变量进行访问。例如,在一个类中定义一个变量为分数,定义两个方法一个为getScore,一个为setScore,再定义一个类并在main方法中把分数修改并打印出来。(注意:分数的范围应该为0—150分,public类应与java文件名一致。)演示设置和得到分数。构造方法的重载看例子(构造方法的重载)又多定义两个构造方法,其中一个是接受外部输入字符串并传给name并打印出来,另一个是接受外部输入字符串和int类型,并传给name和age的。注意,在产生对象的时候,编译器会根据里面参数类型和个数的不同而选择哪种构造方法来产生对象。思考:假如构造方法中要求输入参数,但是产生对象时却没有输入参数,并且构造方法只有一个,是否能实现。this引用句柄每个成员方法内部,都有一个this引用变量,指向调用这个方法的对象。
演示this与this1。内存图。函数的参数传递注意:在方法中的形式参数相当于该方法的局部变量,在方法结束之后就就被释放了,不会影响其他变量。演示参数传递1。内存变化过程对象的引用变量不是对象本身,它们只是对象的名称。注意在对象的参数传递过程中的引用变量指向的变化。演示参数传递2。内存变化假如在change方法中在修改x的值之前,先创建一个新对象,则会有变化。演示参数传递2。内存变化过程static静态编写一个类时,其实就是在描述其对象的属性和行为,而并没有产生实质上的对象,只有通过new关键字才会产生出对象后,系统才会分配内存空间给对象,其方法才可以供外部调用。我们可以在类中定义一个固定的数据在内存当中,而且只有一份。所有类产生的对象都共享这一个数据(可以是变量)。思考:中国人类,由类产生的每个中国人的对象,可以共享一个成员变量—国籍,而不是每生成一个对象都产生一个国籍的变量。画内存图。static所修饰的静态变量就符合该条件。演示中国人注意:在静态方法里只能直接调用同类中其它的静态成员(包括变量和方法),而不能直接访问类中的非静态成员。(演示Bbb)这是因为,对于非静态的方法和变量,需要先创建类的实例对象后才可使用,而静态方法在使用前不用创建任何对象。静态方法不能以任何方式引用this和super关键字静态方法在使用前不用创建任何实例对象,当静态方法被调用时,this所引用的对象根本就没有产生。静态代码块一个类中可以使用不包含在任何方法体中的静态代
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024-2030年中国多肽药物行业发展环境分析及投资战略研究报告
- 2024-2030年中国地坪行业发展态势与投资建议分析报告
- 小学班主任工作考核方案
- 2024年环保节能厂房分租服务合同模板下载3篇
- 2024年版:数字音乐版权许可合同(许可范围、使用方式及许可费用)
- 2024年区二手房买卖交易安全协议范本2篇
- 2024年生态旅游度假区开发与运营合同
- 马鞍山师范高等专科学校《新生专业导读课程》2023-2024学年第一学期期末试卷
- 2024年度财富传承代客理财专项协议3篇
- 2025电脑销售合同样本
- 民办学校教职工入职背景审查制度
- 2024年新人教版四年级数学上册《教材练习21练习二十一(附答案)》教学课件
- 2024年湛江市农业发展集团有限公司招聘笔试冲刺题(带答案解析)
- 商业伦理与社会责任智慧树知到期末考试答案2024年
- MOOC 创新思维与创业实验-东南大学 中国大学慕课答案
- 二级公立医院绩效考核三级手术目录(2020版)
- 6人小品《没有学习的人不伤心》台词完整版
- GB/T 16865-1997变形铝、镁及其合金加工制品拉伸试验用试样
- 自闭症儿童行为检核表学前版
- 五年级上册数学专项练习高的画法 全国通用
- 民警个人季度小结范文(3篇)
评论
0/150
提交评论