ImageVerifierCode 换一换
格式:PPT , 页数:45 ,大小:1.12MB ,
资源ID:12884396      下载积分:12 金币
快捷注册下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/12884396.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请

   平台协调中心        【在线客服】        免费申请共赢上传

权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

注意事项

本文(Java基础第3章.ppt)为本站上传会员【精***】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

Java基础第3章.ppt

1、目录,本章小结,第三章 面向对象(上),面向对象的概念,构造方法,this,和,static,类与对象,内部类,思考:可以定义什么?,3.1,面向对象的概念,3.2,类与对象,3.3,构造方法,3.4,this,关键字,3.5,垃圾回收,3.6,static,关键字,3.7,内部类,3.8,Java,的帮助文档,3.1,面向对象的概念,面向对象是一种符合人类思维习惯的编程思想。现实生活中存在各种形态不同的事物,这些事物之间存在着各种各样的联系。在程序中使用对象来映射现实中的事物,使用对象的关系来描述事物之间的联系,这种思想就是面向对象。,面向过程就是分析解决问题所需要的步骤,面向对象则是把解

2、决的问题按照一定规则划分为多个独立的对象,然后通过调用对象的方法来解决问题。,面向对象的特点主要可以概括为封装性、继承性和多态性,。,3.2,类与对象,面向对象的编程思想力图在程序中对事物的描述与该事物在现实中的形态保持一致。为了做到这一点,面向对象的思想中提出两个概念,即类和对象。,类是对某一类事物的抽象描述,而对象用于表示现实中该类事物的个体。,类和对象的关系如同玩具和玩具模型的关系。,可以将玩具模型看作是一个类,将一个个玩具看作对象,从玩具模型和玩具之间的关系便可以看出类与对象之间的关系。类用于描述多个对象的共同特征,它是对象的模板。对象用于描述现实中的个体,它是类的实例,并且一个类可以

3、对应多个对象,3.2,类与对象,3.2.1,类的定义,在,面向对象的思想中最核心就是对象,为了在程序中创建对象,首先需要定义一个类。类是对象的抽象,它用于描述一组对象的共同特征和,行为,类中可以定义成员变量和成员方法,其中成员变量用于描述对象的特征,也被称作属性,成员方法用于描述对象的行为,可简称为方法,3.2,类与对象,3.2.1,类的定义,定义一个,Person,类,Person,是类名,,age,是成员变量,,speak(),是成员方法。在成员方法,speak(),中可以直接访问成员变量,age,。,3.2.2,对象的创建与使用,应用程序想要完成具体的功能,仅有类是远远不够的,还需要根据

4、类创建实例对象。,在,Java,程序中可以使用,new,关键字来创建对象,具体格式如下:,例如,创建一个,Person,对象,具体示例如下:,3.2,类与对象,3.2,类与对象,3.2.2,对象的创建与使用,“,new Person(),”用于创建,Person,类的一个实例对象,“,Person p,”则是声明了一个,Person,类型的变量,p,。中间的等号用于将,Person,对象在内存中的地址赋值给变量,p,,这样变量,p,便持有了对象的引用,,变量,p,和对象之间的引用关系如下图所示。,3.2,类与对象,3.2.2,对象的创建与使用,在创建,Person,对象后,可以通过对象的引用来

5、访问对象所有的成员,具体格式如下:,看一个例子,具体如下:,3.2,类与对象,3.2.2,对象的创建与使用,在例程,3-2,中,通过“,p1.age=18,”将,p1,对象的,age,属性赋值为,18,,没有对,p2,对象的,age,属性进行赋值,,但,p2,对象的,age,属性也是有值的,其值为,0,。这是因为在针对不同类型的成员变量,,Java,虚拟机会赋予不同的初始值,3.2,类与对象,3.2.2,对象的创建与使用,当对象被实例化后,在程序中可以通过对象的引用变量来访问该对象的成员,。,当没有任何变量引用这个对象时,它将成为垃圾对象,不能再被使用。,情况,1,:变量超出作用域变为垃圾对象

6、3.2,类与对象,3.2.2,对象的创建与使用,情况,2,:变量的值变为,null,运行结果,在例程3-3中,创建了一个Person类的实例对象,并两次调用了该对象的say()方法。第一次调用say()方法时可以正常打印,但在第10行代码中将变量p2的值置为null,当再次调用say()方法时抛出了空指针异常。在Java中,null是一种特殊的常量,当一个变量的值为null时,则表示该变量不指向任何一个对象。在例程中,当把变量p2置为null时,被p2所引用的Person对象就会失去引用,成为垃圾对象,3.2,类与对象,3.2.3,类的设计,假设要在程序中描述一个学校所有学生的信息,可以先设

7、计一个学生类(,Student,),在这个类中定义两个属性,name,、,age,分别表示学生的姓名和年龄,定义一个方法,introduce(),表示学生做自我介绍。根据上面的描述设计出来的,Student,类如例程,3-4,所示,3.2,类与对象,3.2.4,类的封装,先来看一个例子,具体如下:,运行结果,在例程,3-5,的第,5,行代码中,将年龄赋值为一个负数,-30,,这在程序中不会有任何问题,但在现实生活中明显是不合理的。为了解决年龄不能为负数的问题,在设计一个类时,应该对成员变量的访问作出一些限定,不允许外界随意访问。这就需要实现类的封装。,3.2,类与对象,3.2.4,类的封装,所

8、谓类的封装是指在定义一个类时,将类中的属性私有化,即使用,private,关键字来修饰,私有属性只能在它所在类中被访问,为了能让外界访问私有属性,需要提供一些使用,public,修饰的公有方法,其中包括用于获取属性值的,getXxx,方法和设置属性值的,setXxx,方法,3.2,类与对象,3.2.4,类的封装,使用,private,关键字将属性,name,和,age,声明为私有,getName(),方法用于获取,name,属性的值,,setName(),方法用于设置,name,属性的值,getAge(),和,setAge(),方法用于获取和设置,age,属性的值。在,setAge(),方法中

9、对参数,stuAge,的值进行检查,,3.3,构造方法,3.3.1,构造方法的定义,在一个类中定义的方法如果同时满足以下三个条件,该方法称为构造方法,具体如下:,方法名和类名相同,方法名的前面没有返回值类型的,声明,方法中不能使用,return,语句返回一个值,3.3,构造方法,3.3.1,构造方法的定义,在例程,3-7,的,Person,类中定义了一个无参的构造方法,Person(),。从运行结果可以看出,,Person,类中无参的构造方法被调用了。这是因为第,9,行代码在实例化,Person,对象时会自动调用类的构造方法,“,new Person(),”语句的作用除了会实例化,Person

10、对象,还会调用构造方法,Person(),3.3,构造方法,3.3.1,构造方法的定义,在一个类中除了定义无参的构造方法,还可以定义有参的构造方法,通过有参的构造方法就可以实现对属性的赋值,例程,3-8,的,Person,类中定义了有参的构造方法,Person(int a),。第,13,行代码中的“,new Person(20),”会在实例化对象的同时调用有参的构造方法,并传入了参数,20,。在构造方法,Person(int a),中将,20,赋值给对象的,age,属性。通过运行结果可以看出,,Person,对象在调用,speak(),方法时,其,age,属性已经被赋值为,20,。,3.3,

11、构造方法,3.3.2,构造方法的重载,与普通方法一样,构造方法也可以重载,在一个类中可以定义多个构造方法,只要每个构造方法的参数类型或参数个数不同即可,例程,3-9,的,Person,类中定义了两个构造方法,它们构成了重载。在创建,p1,对象和,p2,对象时,根据传入参数的不同,分别调用不同的构造方法。从程序的运行结果可以看出,两个构造方法对属性赋值的情况是不一样的,其中一个参数的构造方法只针对,name,属性进行赋值,这时,age,属性的值为默认值,0,。,脚下留心,在,Java,中的每个类都至少有一个构造方法,如果在一个类中没有定义构造方法,系统会自动为这个类创建一个默认的构造方法,这个默

12、认的构造方法没有参数,在其方法体中没有任何代码,即什么也不做。,下面程序中,Person,类的两种写法效果是完全一样的。,脚下留心,如果,为该类定义了构造方法,系统就不再提供默认的构造方法了,运行结果,从图,3-12,可以看出程序在编译时报错,其原因是调用,new Person(),创建,Person,类的实例对象时,需要调用无参的构造方法,而我们并没有定义无参的构造方法,只是定义了一个有参的构造方法,系统将不再自动生成无参的构造方法,3.4 this,关键字,1,、,通过,this,关键字可以明确地去访问一个类的成员变量,解决与局部变量名称冲突问题,,具体示例如下:,在上面的代码中,构造方法

13、的参数被定义为,age,,它是一个局部变量,在类中还定义了一个成员变量,名称也是,age,。在构造方法中如果使用“,age,”,则是访问局部变量,但如果使用“,this.age,”则是访问成员变量。,3.4 this,关键字,2,、,通过,this,关键字调用成员方法,具体示例代码如下:,在上面的,speak(),方法中,使用,this,关键字调用,openMouth(),方法。注意,此处的,this,关键字可以省略不写,也就是说上面的第,6,行代码写成“,this.openMouth(),”和“,openMouth(),”,效果是完全一样的,3.4 this,关键字,3,、,构造方法是在实例

14、化对象时被,Java,虚拟机自动调用的,在程序中不能像调用其它方法一样去调用构造方法,但可以在一个构造方法中使用“,this(,参数,1,参数,2),”的形式来调用其它的构造方法通过,this,关键字调用成员方法,3.4 this,关键字,注意:,1,、只能在构造方法中使用,this,调用其它的构造,方法,2,、在构造方法中,使用,this,调用构造方法的语句必须位于第一行,且只能出现一,次,,,下面的写法是非法,的,。,3,、不能在一个类的两个构造方法中使用,this,互相,调用,3.5,垃圾回收,当,一个对象成为垃圾后仍会占用内存空间,时间一长,就会导致内存空间的不足。针对这种情况,,Ja

15、va,中引入了垃圾回收,机制,Java,虚拟机就会启动垃圾回收器将这些垃圾对象从内存中释放,从而使程序获得更多可用的内存,空间,除了等待,Java,虚拟机进行自动垃圾回收,也可以通过调用,System.gc(),方法来通知,Java,虚拟机立即进行垃圾回收。当一个对象在内存中被释放时,它的,finalize(),方法会被自动调用,3.5,垃圾回收,在例程,3-13,的,Person,类中定义了一个,finalize(),方法,该方法的返回值必须为,void,,并且要使用,public,来修饰。在,main(),方法中创建了两个对象,p1,和,p2,,然后将两个变量置为,null,,这意味着新创

16、建的两个对象成为垃圾了,紧接着通过“,System.gc(),”语句通知虚拟机进行垃圾回收。从运行结果可以看出,虚拟机针对两个垃圾对象进行了回收,并在回收之前分别调用两个对象的,finalize(),方法。,3.6 static,关键字,3.6.1,静态变量,在一个,Java,类中,可以使用,static,关键字来修饰成员变量,该变量被称作静态,变量,静态变量被所有实例共享,可以使用“类名,.,变量名”的形式来,访问,static,关键字只能用于修饰成员变量,不能用于修饰局部变量,否则编译会报错,下面的代码是非法的。,3.6 static,关键字,3.6.1,静态变量,例程,3-14,的,St

17、udent,类中定义了一个静态变量,schoolName,,用于表示学生所在的学校,它被所有的实例所共享。由于,schoolName,是静态变量,因此可以直接使用,Student.schoolName,的方式进行调用,也可以通过,Student,的实例对象进行调用,如,stu2.schoolName,。在第,8,行代码将变量,schoolName,赋值为“,黄淮学院,”,通过运行结果可以看出学生对象,stu1,和,stu2,的,schoolName,属性均为“,黄淮学院,”。,“,黄淮学院,”;,3.6 static,关键字,3.6.2,静态方法,被,static,关键字修饰的方法称为静态方法

18、同静态变量一样,静态方法可以使用“类名,.,方法名”的方式来访问,也可以通过类的实例对象来访问,。,在一个静态方法中只能访问用,static,修饰的成员,原因在于没有被,static,修饰的成员需要先创建对象才能访问,而静态方法在被调用时可以不创建任何对象。,3.6 static,关键字,3.6.2,静态方法,例程,3-15,的,Person,类中定义了静态方法,sayHello(),,在第,8,行代码处通过“,Person.sayHello(),”的形式调用了静态方法,由此可见静态方法不需要创建对象就可以调用。,3.6 static,关键字,3.6.3,静态代码块,在,Java,类中,使用

19、一对大括号包围起来的若干行代码被称为一个代码块,用,static,关键字修饰的代码块称为静态代码,块,当类被加载时,静态代码块会执行,由于类只加载一次,因此静态代码块只执行一,次,在程序中,,通常使用,静态代码块来对类的成员变量进行初始化,3.6 static,关键字,3.6.3,静态代码块,从图,3-19,所示的运行结果可以看出,程序中的两段静态代码块都执行了。在命令行窗口输入“,java Example14,”后,虚拟机首先会加载类,Example14,,在加载类的同时就会执行该类的静态代码块,紧接着会调用,main(),方法。在该方法中创建了两个,Person,对象,但在两次实例化对象的

20、过程中,静态代码块只执行一次,这就说明类在第一次使用时才会被加载,并且只会加载一次,3.6 static,关键字,3.6.4,单例模式,设计模式就是针对这些问题和需求,在大量的实践中总结和理论化之后优选的代码结构、编程风格、以及解决问题的思考方式,单例模式是,Java,中的一种设计模式,它是指在设计一个类时,需要保证在整个程序运行期间针对该类只存在一个实例,对象,看一个实现了单例模式的类,3.6 static,关键字,3.6.4,单例模式,类,的,构造方法使用,private,修饰,声明为私有,这样就不能在类的外部使用,new,关键字来创建实例对象了,。,在类,的,内部创建一个该类的实例对象,

21、并使用静态变量,INSTANCE,引用该对象,由于变量应该禁止外界直接访问,因此使用,private,修饰,声明为私有,成员,为了,让,类的外部能够获得类的实例对象,需要定义一个静态方法,getInstance(),,用于返回该类实例,INSTANCE,。由于方法是静态的,外界可以通过“类名,.,方法名”的方式来访问,3.7,内部类,3.7.1,成员内部类,在一个类中除了可以定义成员变量、成员方法,还可以定义类,这样的类被称作成员内部类,。,在,成员内部类中可以访问外部类的所有,成员,例程,3-20,中,,Outer,类是一个外部类,在该类中定义了一个内部类,Inner,和一个,test(),

22、方法,其中,,Inner,类有一个,show(),方法,在,show(),方法中访问外部类的成员变量,num,,,test(),方法中创建了内部类,Inner,的实例对象,并通过该对象调用,show(),方法,将,num,值进行打印。从运行结果可以看出,内部类可以在外部类中被使用,并能访问外部类的成员,3.7,内部类,3.7.1,成员内部类,如果,想通过外部类去访问内部类,则需要通过外部类对象去创建内部类对象,创建内部类对象的具体语法格式如下,:,针对例程,3-20,中定义的,Outer,类写一个测试,程序,运行结果同例程,3-20,一样,如图,3-21,所示,。,3.7,内部类,3.7.2,

23、静态内部类,可以使用,static,关键字来修饰一个成员内部类,该内部类被称作静态内,部类,,,它可以在不创建外部类对象的情况下被实例化。创建静态内部类对象的具体语法格式如下,:,3.7,内部类,3.7.3,方法,内部类,方法,内部类是指在成员方法中定义的类,它只能在当前方法中被使用,。,例程,3-23,中,在,Outer,类的,test(),方法中定义了一个内部类,Inner,。由于,Inner,是方法内部类,因此程序只能在方法中创建该类的实例对象并调用,show(),方法。从运行结果可以看出,方法内部类也可以访问外部类的成员变量,num,。,3.8 Java,的帮助文档,3.8.1 Jav

24、a,的文档注释,文档注释,用于,是,嵌入到程序当中的帮助信息,用于说明如何使用当前,程序,,它,以,“,/*,”开头,以“,*/,”标志结束,Java,中提供了,javadoc,命令,它可以将这些帮助信息提取出来,自动生成,HTML,格式的帮助文档,从而实现程序的文档,化,author,:用于对类的说明,表示这个程序的作者,version,:用于对类说明,表示这个程序的开发版本号,param,:用于对方法的说明,表示方法上定义的参数以及参数对应的说明,return,:用于对方法的说明,表示方法的返回值代表的意义,3.8 Java,的帮助文档,3.8.1 Java,的文档注释,为程序添加文档注释

25、后,便可以使用,javadoc,命令生成,Person,类的帮助,文档,。,打开,命令行窗口,进入程序所在的目录,输入生成文档的命令,具体如下所示,:,其中:,-,d,用来指定输出文档存放的,目录,.,表示当前的,目录,-,version,用来指定输出文档中需包含版本信息,-,author,用来指定输出文档中需包含作者信息,3.8 Java,的帮助文档,3.8.2 JDK,帮助文档的使用,JDK,帮助文档是,Oracle,公司针对,JDK,中所有的,Java,类提供,的,一整套帮助文档,,它详细介绍了,所有,Java,类的属性、方法、继承关系和示例用法等内容,JDK,帮助文档通常有两种,一种是,Oracle,公司官方发布的,HTML,格式的,JDK,帮助文档,,一种是,由一些,Java,爱好者根据官方文档制作而成的,CHM,格式的,JDK,帮助文档,。,本章小结,本章详细介绍了,面向对象,的基础知识,,包括,什么是面向对象,、类和对象之间的关系、类的封装与使用、构造方法的定义与重载、,this,关键字、,static,关键字、内部类等,重点在于,面向对象的编程思想、类和对象、类的封装、构造方法以及,this,关键字的使用,,大家应该多思考,深刻领会面向对象的好处,熟练掌握好这些知识,有助于学习下一章的内容。深入理解面向对象的思想,对以后的实际开发也是大有裨益的,

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服