欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    第3讲面向对象类与对象精选文档.ppt

    • 资源ID:87556892       资源大小:3.83MB        全文页数:77页
    • 资源格式: PPT        下载积分:18金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要18金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    第3讲面向对象类与对象精选文档.ppt

    第3讲面向对象类与对象本讲稿第一页,共七十七页课前思考课前思考什么是对象?什么是类?什么是对象?什么是类?类与对象之间的关系类与对象之间的关系?对象的初始化对象的初始化java语言在面向对象编程方面有何独特的特点吗?语言在面向对象编程方面有何独特的特点吗?第三章第三章 面向对象面向对象类与对象类与对象本讲稿第二页,共七十七页学习目标学习目标本章主要讲述了本章主要讲述了java语言的面向对象技术语言的面向对象技术面向对象的基本概念、面向对象的程序设计方法;面向对象的基本概念、面向对象的程序设计方法;java中的类、对象、面向对象的特性;中的类、对象、面向对象的特性;通过本章的学习,可以使用面向对象技术编写通过本章的学习,可以使用面向对象技术编写java程序程序第三章第三章 面向对象技术面向对象技术本讲稿第三页,共七十七页学习指南学习指南应深刻理解面向对象的相关概念,使用前面讲的编程基础知识及本章面向对象技术,编写简单的java类,由浅至深,养成风格良好的编程习惯重重 点点仔细体会面向对象编程的思想,熟练理解类和对象的概念,理解面向对象的特性,会编写简单的类,逐渐掌握面向对象编程的方法;第三章第三章 面向对象技术面向对象技术本讲稿第四页,共七十七页Java是一种完全面向对象的编程语言,程序中的所有数据与函数都封装在类中;Java实现了封装、继承、多态等面向对象属性,降低了程序的复杂性、实现了程序的可重用性;要掌握两个核心概念要掌握两个核心概念类类对象对象;要理解面向对象的三个核心特性:要理解面向对象的三个核心特性:类的类的封装封装、继承继承和和多态多态第三章第三章 面向对象技术面向对象技术本讲稿第五页,共七十七页类:现实世界的模型(协作图CollaborationDiagram)人与汽车(客户与服务器)消息驱动状态、属性、标识、行为、封装第三章第三章 面向对象技术面向对象技术本讲稿第六页,共七十七页1.编辑编辑源程序源程序:Fish.java【例例3-1】定义一个描述鱼的类定义一个描述鱼的类FishpublicclassFish/关键字class用来定义类FishStringname;/描述Fish的名字StringtheColor;/描述Fish的颜色voidsetValue(Stringn,Stringc)/设置值:名字,颜色name=n;theColor=c;voidswimming()/Fish最大的特性是能游泳System.out.println(icanswimming.);voidoutput()System.out.println(mynameis:+name+ilike:+theColor);publicstaticvoidmain(Stringargs)FishclownFish=newFish();/创建Fish“变量”clownFishclownFish.setValue(nemo,red);/调用Fish中的方法(函数)为f赋值clownFish.output();/输出f所描述的鱼的信息clownFish.swimming();/Fish会游泳定义了一个类定义了一个类类中的类中的变量变量描述类的属性,描述类的属性,用来用来存储数据存储数据类的类的函数函数描述类的行描述类的行为,完成对数据的为,完成对数据的处理处理创建对象创建对象本讲稿第七页,共七十七页2.编译这个程序,在当前目录下生成编译这个程序,在当前目录下生成Fish.class的文件的文件;d:javajavacFishe.java3.然后输入以下命令,运行这个程序然后输入以下命令,运行这个程序:d:javajavaFish执行这个程序,将输出如下图所示:JavaJava程序程序-实例说明实例说明本讲稿第八页,共七十七页Fish是程序中定义的一种新型数据类型描述鱼的属性属性name,theColor描述鱼的行为行为swimming()及对数据处理的setValue()和output()方法(函数)并把它们封装集成起来,这就是本章要学习掌握的,面向对象编程中最重要的概念类类JavaJava程序程序-实例说明实例说明本讲稿第九页,共七十七页作为类这种数据类型的变量,如例3.1中Clownfish,是面向对象程序设计中的另外一个重要概念对象对象对象是类的一个实例,类是创建对象的模版,其实,对象就是类这种数据类型的变量,通过对象可以引用类中定义的各个成员变量和成员方法类类是一种新的“数据类型数据类型”,描述了一类对象的共同特性,它把数据的存储与对数据的处理封装为一个整体学习Java编程必须要学会如何定义类,理解类与对象的关系。JavaJava程序程序-实例说明实例说明本讲稿第十页,共七十七页1.首先,首先,编辑编辑软件源程序软件源程序:Date.java【例例3-2】定义一个日期类定义一个日期类publicclassDatepublicintyear,month,day;publicvoidsetDate(inty,intm,intd)year=y;month=m;day=d;publicintgetYear()returnyear;publicStringtomorrow()day+;Stringd=month+”_”+day+”_”+year;returnd;定义了一个类定义了一个类类中的变量描述类的属性,类中的变量描述类的属性,用来存储数据用来存储数据类的函数描述类的行类的函数描述类的行为,完成对数据的处为,完成对数据的处理理算法不完整算法不完整本讲稿第十一页,共七十七页2.编译这个程序,在当前目录下生成编译这个程序,在当前目录下生成Birthday.class的文件的文件;d:javajavacDate.java3.然后输入以下命令,运行这个程序然后输入以下命令,运行这个程序:d:javajavaDate执行这个程序执行这个程序,将输出一些信息,如下图所示:错误提示错误提示:没有定义main方法JavaJava程序程序-实例说明实例说明本讲稿第十二页,共七十七页4.再用文字编辑软件输入以下源程序:useDate.javaJavaJava程序程序-实例说明实例说明publicclassuseDatepublicstaticvoidmain(Stringargv)Dateb1,b2;b1=newDate();b2=newDate();b2.setDate(1950,11,01);System.out.println(b1.getYear();System.out.println(b2.tomorrow();定义一个类定义一个类类成员方法类成员方法main()是程序执行是程序执行的入口的入口Date是是一种数据类型,一种数据类型,声明该类型的变量声明该类型的变量b1,b2使用使用new创建变量,并为之分配创建变量,并为之分配存储空间存储空间通过通过b1,b2调用类的方法,完成对数调用类的方法,完成对数据的处理据的处理 b2.setDate调用函数,完成对对调用函数,完成对对象象b2中的变量赋值中的变量赋值本讲稿第十三页,共七十七页5.编译并运行程序编译并运行程序useDate.java,输出信息如下图,输出信息如下图JavaJava程序程序-实例说明实例说明本讲稿第十四页,共七十七页JavaJava程序程序-实例说明实例说明第二个程序useDate.java,这是个可独立运行的应用程序,其中,main方法中的前两条,看上去象是声明变量:Dateb1=newDate();Dateb2=newDate(1949,10,01);Date是已经定义的类,后面的程序就可以直接来定义这种新型数据类型的变量;也就是定义Date类型的变量b1、b2我们将Date称为类,而将b1和b2称为对象类是表示一类事物,而对象则是类的一个个体,一个实例类是表示一类事物,而对象则是类的一个个体,一个实例;Birthday看作一种特殊的数据类型;而对象就是这种特殊数据类型的变量本讲稿第十五页,共七十七页使用new运算符创建对象创建对象,创建对象同时对其初始化:1.Dateb1=newDate();创建变量为对象分配存储空间;将对象b1的三个变量year,month和day分别初始化为0JavaJava程序程序-实例说明实例说明本讲稿第十六页,共七十七页JavaJava程序程序-实例说明实例说明使用new运算符创建对象创建对象,创建对象同时对其初始化:2.Dateb1=newDate();创建变量为对象分配存储空间;将对象b1的三个变量year,month和day分别初始化为0b2.setDate(1949,10,01);调用函数setDate(inty,intm,intd)year=y;month=m;day=d;通过参数传递,分别赋值给对象b2的三个变量:1949赋值给year,10赋值给month,1赋值给day本讲稿第十七页,共七十七页类:是一个逻辑抽象的概念,它声明了一种新的“数据类型数据类型”,描述了一类对象的共同特性;它把描述其属性的数据及对数据处理的函数封装在一起;如定义Date类中,既有数据属性类中,既有数据属性year、month、day,还有描述其,还有描述其动作,即完成对数据处理的函数动作,即完成对数据处理的函数getYear(),tomorrow()类就是一种包含数据存储与对数据处理的一种新的数据类型;系统定义类(JDKAPI)和用户程序定义类对象:对象:在面向对象的世界里,我们把类的具体的一个个的个体称为它所属它所属类类的的对象对象在本章中,我们引入全新的编程思想面向对象程序设计方法,其核心就是类核心就是类 3.2 3.2 类的定义类的定义本讲稿第十八页,共七十七页如果把如果把日期日期看作一个抽象的类的,那么某一天就是看作一个抽象的类的,那么某一天就是日期日期类的一个实例,类的一个实例,即一个对象;即一个对象;日期的年、月、日都是描述日期的日期的年、月、日都是描述日期的数据属性数据属性可以定义相应的可以定义相应的变量变量来描述类中这些类的属性来描述类中这些类的属性而函数而函数getYear()、tomorrow()完成对数据的处理得到预期的结果;完成对数据的处理得到预期的结果;类中的变量,称为类中的变量,称为成员变量成员变量类中对数据操作的函数,称为类中对数据操作的函数,称为成员方法成员方法这些变量和函数都是属于类的,所以是类的成员这些变量和函数都是属于类的,所以是类的成员 3.3 3.3 类与对象类与对象本讲稿第十九页,共七十七页java类的定义格式分为两部分:类声明和类主体:类的一般格式类的一般格式:类主体;类主体;类的声明类的声明定义了类的定义了类的名称名称、访问权限访问权限、与其他类的关系与其他类的关系类主体类主体定义了该类的成员:定义了该类的成员:成员变量与成员方法成员变量与成员方法;3.3.1 3.3.1 类的声明类的声明本讲稿第二十页,共七十七页java类的定义格式分为两部分:类声明和类主体:类的一般格式类的一般格式:类主体;类主体;3.3.1 3.3.1 类的声明类的声明如下面定义类的例子。classBook.上面的例子声明了一个Book类,class是关键字用来定义类Book类名必须是合法的Java标识符,不能是关键字为提高程序的易读性,类名第一个字符一般大写常常是一个单词或几个单词的组合,如,Car,Student,Employee等本讲稿第二十一页,共七十七页类体类体是类的主体部分,要完成类的是类的主体部分,要完成类的成员变量成员变量与与成员方法成员方法的定义与实现:的定义与实现:class 3.3.2 3.3.2 类体类体与与C+不同:不同:java类中的成员方法的定义类中的成员方法的定义必须在类体内完成必须在类体内完成Java是一门纯粹的面向对象语言,所有的变量和方法都在类体内定义,没有游离于类之外的变量和方法所以称为类的成员变量成员变量和和成员方法成员方法本讲稿第二十二页,共七十七页1.声明成员变量(数据成员)声明成员变量(数据成员)类的状态需要成员变量来描述,简单变量的语法如下:变量类型变量类型变量名变量名必须给出必须给出变量名变量名与与所属类型,如所属类型,如声明一个表日期类声明一个表日期类Date1,有三个成员变量:,有三个成员变量:publicclassDate1intyear,month,day;声明成员变量声明成员变量成员变量必须在类主成员变量必须在类主体内声明,且不包含体内声明,且不包含在方法体中在方法体中本讲稿第二十三页,共七十七页1.声明成员变量(数据成员)声明成员变量(数据成员)类的状态需要成员变量来描述,简单变量的语法如下:变量类型变量类型变量名变量名必须给出必须给出变量名变量名与与所属类型,如所属类型,如例如例如,定义一个描述学生的类,含有,定义一个描述学生的类,含有7个成员变量:个成员变量:name,age,sex,dept分别描述学生的姓名,年龄,性分别描述学生的姓名,年龄,性别和系别;别和系别;english,math,computer用来表示三门科用来表示三门科目成绩。目成绩。:publicclassStudentStringname,dept,sex;intage,english,math,computer;声明成员变量声明成员变量成员变量必须在类主成员变量必须在类主体内声明,且不包含体内声明,且不包含在方法体中在方法体中本讲稿第二十四页,共七十七页2.声明成员方法(成员函数)声明成员方法(成员函数)JDKAPI和用户自定义方法类中定义的方法通常起到两种作用:1)围绕着类的属性进行各种操作;2)与其他的类或对象进行数据交流、消息传递等操作其声明与实现分两个部分:方法声明与方法体其声明与实现分两个部分:方法声明与方法体修饰符修饰符返回值类型返回值类型方法名方法名()throws异常类异常类方法体:方法体:局部变量声明;局部变量声明;语句序列;语句序列;声明成员方法声明成员方法声明中必须有方法名,方声明中必须有方法名,方法的返回类型,如果没参法的返回类型,如果没参数,可以空数,可以空本讲稿第二十五页,共七十七页2.声明成员方法(成员函数)声明成员方法(成员函数)如下面的程序段定义了类Student,它包括一个成员方法total();三个int类型的成员变量,三个String类型的成员变量。方法total()的返回值是int类型,用来计算学生的总成绩publicclassStudentStringname,dept,sex;intage,english,math,computer;inttotal(inte,intm,intc)returne+m+c;声明成员方法声明成员方法声明中必须有方法名,方声明中必须有方法名,方法的返回类型,如果没参法的返回类型,如果没参数,可以空数,可以空本讲稿第二十六页,共七十七页publicclassDate1intyear,month,day;voidsetdate(inty,intm,intd)year=y;month=m;day=d;booleanisleapyear()return(year%400=0)|(year%100!=0)&(year%4=0);voidprint()System.out.println(“dateis”+year+-+month+-+day);publicstaticvoidmain(Stringargs)Date1d=newDate1();d.setdate(2004,9,18);d.print();System.out.println(d.year+isaleapyear,+d.isleapyear();/类声明类声明/成员变量,表示年、月、日成员变量,表示年、月、日/成员方法,设置日期值成员方法,设置日期值/成员方法,判断年份是否为闰年成员方法,判断年份是否为闰年/输出日期值,无返回值输出日期值,无返回值,无参数无参数/主方法,程序执行的开始主方法,程序执行的开始/创建对象创建对象/通过对象,调用成员方法通过对象,调用成员方法【例例3-3】创建日期类创建日期类Date1本讲稿第二十七页,共七十七页publicclassDate1intyear,month,day;voidsetdate(inty,intm,intd)year=y;month=m;day=d;booleanisleapyear().voidprint().publicstaticvoidmain(Stringargs)Date1d=newDate1();d.setdate(2004,9,18);d.print();System.out.println(d.year+isaleapyear,+d.isleapyear();本讲稿第二十八页,共七十七页类类是现实世界一类对象的共同特征(属性和操作)的表示,是是创创建建对对象的模板象的模板;对对象象是类的实例,在程序中创建每一个对象将在内存中开辟一块空间,存储该对象的属性和方法每个对象都属于一种类型,即所属的类;程序是一大堆对象的组合;通过消息传递 3.3.3 3.3.3 创建对象创建对象本讲稿第二十九页,共七十七页1.1.声明对象声明对象;对对象象是类的实例,即对象是一个已定义的实例,定义一个对象,必须声明该对象所属的类;对象的声明格式:;如,Datetoday;对象声明仅仅告诉编译器,对象所属的类,并没有真正为对象分配存储空间,只有使用new运算符才能实例化对象 3.3.4 3.3.4 创建对象创建对象本讲稿第三十页,共七十七页2.2.创建创建(实例化实例化)对象对象创建对象需要使用new运算符,通过new运算符为对象申请存储空间,用来存储对象的成员变量;创建对象的一般格式创建对象的一般格式:对象名对象名=new类名类名(参数列表参数列表);如,如,day=newDate();功能功能:是在创建对象,并把对象的成员变量初始化为是在创建对象,并把对象的成员变量初始化为“空值空值”;3.3.4 3.3.4 创建对象创建对象本讲稿第三十一页,共七十七页3.3.声明对象的同时实例化对象声明对象的同时实例化对象前面两步可以使用一步完成,即在声明对象的同时,使用new运算符创建对象;格式如下:=new类名类名(参数列表参数列表);例如,下面的语句可以创建一个例如,下面的语句可以创建一个Date类的新对象类的新对象Dated=newDate();3.3.4 3.3.4 创建对象创建对象本讲稿第三十二页,共七十七页在程序中创建对象的目的就是使用对象,使用对象指引用对象的成员1.引用成员变量引用成员变量通过对象引用成员变量对象名对象名.成员变量名成员变量名通过变量可以引用成员变量,还可以改变成员变量的值,如a.year=2008;3.3.5 3.3.5 使用使用对象对象本讲稿第三十三页,共七十七页2.调用成员方法调用成员方法通过对象调用成员方法的格式:对象名对象名.成员方法名成员方法名如果有参数,还要在方法名后带参数,没有参数,只带空括号,如d.setdate(2004,9,18);d.print();3.3.5 3.3.5 使用使用对象对象本讲稿第三十四页,共七十七页对象对象对象作为类的实例,也就是类这种数据类型的变量一个类可以声明多个对象,创建对象后,系统会为每个对象分配存储空间每个对象单独拥有自己的数据成员每个对象单独拥有自己的数据成员的存储空间,每个对象数据成员的值可以互不相同,并互不影响而各个对象却共享类的函数成员共享类的函数成员,也就是类的函数成员只有一个副本存在通过对象,只可以访问类的外部接口,也就是公有成员公有成员而对私有成员的访问只有借助于公有的函数成员对象小结对象小结本讲稿第三十五页,共七十七页1.系统对对象的初始化系统对对象的初始化当使用new创建对象的时,系统在为对象分配对象的同时,也对对象初始化;对对象的初始化,是指对对象的数据成员初始化数据成员初始化;如声明变量的同时创建对象:Dateday=newDate();为了避免发生编译错误,系统把对象的各种数据类型的数据成员都设置了“空值空值”:如日期对象的三个数据成员都是整数,初始化为0;如果是boolean类型初始化为false如果是引用型,初始化为null 3.3.6 3.3.6 对象初始化对象初始化本讲稿第三十六页,共七十七页 3.3.6 3.3.6 对象初始化对象初始化2.利用构造方法对对象初始化利用构造方法对对象初始化java类定义中引进了构造方法,在创建类的对象时完成对象的数据成员的初始化;构造方法构造方法一种类的特殊的成员方法一种类的特殊的成员方法与类同名的成员方法与类同名的成员方法没有返回值没有返回值作用作用创建对象时,由系统自动调用系统自动调用,完成对象的初始化创建对象时需要完成对对象的初始化;也就是为各个对象的数据成员设置初值本讲稿第三十七页,共七十七页 3.4 3.4 构造方法构造方法在【例例3-3】中,如何完成对对象赋值呢?Date1d=newDate1();d.setdate(2004,9,18);先使用先使用new创建一个对象后,再通过调用方法创建一个对象后,再通过调用方法setdate来完来完成对对象的成员变量的初始化;成对对象的成员变量的初始化;如果使用构造方法,上述的工作就变得更方便简捷了;如果使用构造方法,上述的工作就变得更方便简捷了;在类在类Date中通过来定义的构造方法来完成类对象的初始化中通过来定义的构造方法来完成类对象的初始化本讲稿第三十八页,共七十七页classDate2intyear,month,day;Date2(inty,intm,intd)year=y;month=m;day=d;booleanisleapyear()voidprint().publicclassDate2_expublicstaticvoidmain(Stringargs)Date2a=newDate2(2002,6,30);a.print();System.out.println(a.year+isaleapyear,+a.isleapyear();定义日期类定义日期类Date2类的构造方法类的构造方法,用于初始化成员变量用于初始化成员变量通过参数传递完成对成员变量初始化通过参数传递完成对成员变量初始化定义另一个类定义另一个类创建对象的同时,初始化创建对象的同时,初始化在建立对象时,调用构造方法,在建立对象时,调用构造方法,通过参数传递完成对通过参数传递完成对成员变量的初始化成员变量的初始化【例例3-4】构造方法的定义构造方法的定义本讲稿第三十九页,共七十七页是类的一种特殊方法,它的特殊性主要体现在是类的一种特殊方法,它的特殊性主要体现在:是用来完成对对象初始化的特殊的成员函数;是用来完成对对象初始化的特殊的成员函数;与类同名,没有函数返回值;与类同名,没有函数返回值;在创建一个类的新对象的同时,系统会自动调用该类的构在创建一个类的新对象的同时,系统会自动调用该类的构造函数为新对象初始化;造函数为新对象初始化;构造函数不能由编程人员显式地直接调用构造函数不能由编程人员显式地直接调用,如:Day.Date(2004,9,18);3.4.1 构造方法的特点构造方法的特点/错,构造方法不能由程序员显式调用错,构造方法不能由程序员显式调用不能被继承不能被继承一个类可以有多个构造函数,重载构造函数个类可以有多个构造函数,重载构造函数,后面介绍本讲稿第四十页,共七十七页1.1.完成对象初始化完成对象初始化即对对象的数据成员的初始化2.引入更多的灵活度引入更多的灵活度一个类可以有多个构造方法,在创建对象时,初始化的方式更灵活3.在自定义类中,用户可以不定义类的构造函数在自定义类中,用户可以不定义类的构造函数如果用户不定义类的构造函数,系统会自动为 该类生成一个默认的构造函数;这个构造函数的名字与类名相同,它没有任何形式参数,也不完成任何操作;3.4.2 3.4.2 构造方法的作用构造方法的作用本讲稿第四十一页,共七十七页 3.5 3.5 对象的清除对象的清除其他面向对象语言(如C+)要求程序员跟踪所创建的对象,在对象使用完后,要显式销毁对象,对程序员来说既麻烦又容易出错;Java只需要程序员创建对象,不需要显式销毁它们,java的垃圾回收机制会自动对其管理并销毁不用的对象,收回对象所占资源Java中也可以使用析构方法finalize()来销毁一个对象,将资源归还系统一个类只有一个析构方法finalize()没有参数,也没有返回值本讲稿第四十二页,共七十七页 3.6 3.6 类的封装类的封装在前面的例子中类Data2虽然可以表示日期,但是类的声明与使用没有很好体现面向对象的思想:类中的成员没有设置访问权限;类中的成员没有设置访问权限;可以直接访问类的成员变量可以直接访问类的成员变量java语言中,对象对一组变量和相关方法的进行封装,其中变量表明了对象的状态,方法表明了对象具有的行为;通过对类的成员施以一定的访问权限,可以实现了类中成员的信息(成员)隐藏;隐藏的成员,在类的外部不能访问;在类的外部只能访问类的定义者所指定的成员(public)本讲稿第四十三页,共七十七页 3.6.1 3.6.1 封装的概念封装的概念封装的含义封装的含义类的设计者把类设计为一个黑匣子,使用者只能调用类中定义的公共(public)方法;也就是说只能通过对象调用其公共方法(外部接口),看不到方法的实施细节,不能对类的数据直接操作封装的目的封装的目的:隐藏类的实施细节,使用者必须通过类的外部接口访问类的数据增加代码的可维护性本讲稿第四十四页,共七十七页 3.6.1 3.6.1 封装的概念封装的概念以集成电路同芯片与类作类比以集成电路同芯片与类作类比芯片内部电路不可见(如同类的私有成员),而且我们也不关心,只需要关心引脚的个数、电压、功能(如同类的公有成员,即外部接口),硬件工程师便对这个芯片有了全面的了解,将不同的芯片(对象)通过引脚连在一起,就组成一个具有一定功能的产品(程序);软件工程师通过类也可以达到同样的目的本讲稿第四十五页,共七十七页 3.6.2 3.6.2 如何封装如何封装根据封装原则,使用者可以使用部分成员方法,不能访问其他成员,根据封装原则,使用者可以使用部分成员方法,不能访问其他成员,java通过对成员设置通过对成员设置访问权限访问权限达到这个目的达到这个目的1.访问权限访问权限Java设置了四种访问权限设置了四种访问权限:public(公有公有)、默认、默认、protected(保护保护)、private(私有私有)a.public类中的public成员,可以被所有的类访问,在类的外部通过对象可以调用类public成员;b.默认默认类中不加任何访问权限限定的成员属于默认的(default)访问状态,可以被这个类本身和同一个包中的类所访问;本讲稿第四十六页,共七十七页访问权限访问权限c.Protected类中的protected成员,可被该类及其子类、同一个包中的所有其他的类及其他包中的该类的子类;访问private类中限定为private的成员,只能被这个类本身访问;只可以在类的内部被本类的方法访问;下表列出了这些限定词的作用范围下表列出了这些限定词的作用范围本讲稿第四十七页,共七十七页 3.6.2 3.6.2 类的访问权限类的访问权限设置类的访问权限设置类的访问权限在定义类时,也可以设置类的访问权限,与类成在定义类时,也可以设置类的访问权限,与类成员的访问权限设置不同,类只有员的访问权限设置不同,类只有public类与非公有类与非公有类(不加任何访问权限修饰符)类(不加任何访问权限修饰符):publicclassDate1/公有类公有类classDate2/非公有类非公有类privateclassDate1/错误错误注意:注意:一个源文件中可以有多个类,但一个源文件中可以有多个类,但只能有一个只能有一个public类类,该类与文件同名,如源文件,该类与文件同名,如源文件Date1.java:本讲稿第四十八页,共七十七页 3.6.2 3.6.2 类的访问权限类的访问权限如果在一个可运行的如果在一个可运行的Java源程序中定义了多个类,必须有一个源程序中定义了多个类,必须有一个类中含有类中含有main()方法()方法;程序的执行开始于程序的执行开始于main()方法,那么含()方法,那么含main()方法的类必须()方法的类必须是唯一的是唯一的public类,且文件名就是该类,且文件名就是该public类的类名,称此类类的类名,称此类为为Java程序的程序的支撑类支撑类.如如Java源程序源程序useBook.java中定义两个类:中定义两个类:classBook.publicclassuseBook/源程序中的支撑类源程序中的支撑类.publicstaticvoidmain(Stringargs).本讲稿第四十九页,共七十七页classDate3privateintyear,month,day;Date3(inty,intm,intd)year=y;month=(m=1)&(m=1)&(d=31)?d:1);publicintgetyear()returnyear;publicbooleanisleapyear()return(year%400=0)|(year%100!=0)&(year%4=0);publicvoidprint()System.out.println(dateis+year+-+month+-+day);公有类,与文件同名公有类,与文件同名私有成员变量,只能被本类访问私有成员变量,只能被本类访问构造方法,对对象执行初始化构造方法,对对象执行初始化可以访问本类的可以访问本类的私有成员变量私有成员变量以下是三个公有成员方法,以下是三个公有成员方法,可以对本类成员变量操作可以对本类成员变量操作也是其他类访问的本类的也是其他类访问的本类的外部接口外部接口【例例3-5】带访问控制权限的带访问控制权限的类类本讲稿第五十页,共七十七页publicclassDate3_expublicstaticvoidmain(Stringargs)Date3a=newDate3(2002,6,28);a.year=2004;a.print();System.out.println(a.getyear()+isaleapyear,+a.isleapyear();Date3源文件中的另外一个类源文件中的另外一个类Date3_ex如果访问如果访问Date3,只能通过只能通过Date3的外部接口访问的外部接口访问不能访问不能访问Date3的私有成员的私有成员构造方法初始化对象构造方法初始化对象如果要访问类的数据成如果要访问类的数据成员,必须通过外部接口员,必须通过外部接口访问访问错误,不能访问私有成员错误,不能访问私有成员本讲稿第五十一页,共七十七页 3.7 3.7 staticstatic关键字和静态成员关键字和静态成员 在声明类的成员变量和成员方法时,可以在声明类的成员变量和成员方法时,可以使用使用static关键字把成员声明为静态成员关键字把成员声明为静态成员静态变量也称为静态变量也称为类变量类变量,非静态变,非静态变量称为量称为实例变量实例变量;静态方法也称为静态方法也称为类方法类方法,非静态方,非静态方法称为法称为实例方法实例方法。本讲稿第五十二页,共七十七页 3.7 3.7.1 实例变量和类变量实例变量和类变量类体中用类体中用static修饰的成员变量为类变量(静态变量);修饰的成员变量为类变量(静态变量);与实例变量(没有与实例变量(没有static修饰的)主要区别:修饰的)主要区别:类变量(静态变量)属于类,是一个为类的所有对象共享的类变量(静态变量)属于类,是一个为类的所有对象共享的成员变量;成员变量;本讲稿第五十三页,共七十七页 3.7 3.7.1 实例变量和类变量实例变量和类变量1.实例变量实例变量前面例子中所定义的类的成员变量都是实例变量,一个类可以通过new运算符创建多个对象,每一个对象都会占有不同的存储空间;实际上,对象的存储空间是该对象相应的实例变量所占用的空间,也就是说每个对象都有自己的成员变量,即实例变量实例变量,如,每创建一个类的实例,即对象,系统会为每个对象分配存储空间存储相应的成员变量(实例变量)本讲稿第五十四页,共七十七页类类Book定义了两个实例成员定义了两个实例成员name和和price,一个构造方,一个构造方法;法;创建该类的对象:创建该类的对象:Bookb1=newBook(Java2Programming,39.5f);Bookb2=newBook(C+Programming,52.5f);classBookStringname;/实例变量实例变量floatprice;/实例成员实例成员Book(Stringn,floatp)name=n;price=p;其中,对象其中,对象b1,b2都有自己的成员变量都有自己的成员变量实例成员变量,分别存储相应的值;实例成员变量,分别存储相应的值;也就是说类中定义的实例变量,每个也就是说类中定义的实例变量,每个对象都拥有一份拷贝用来存储描述自对象都拥有一份拷贝用来存储描述自己属性的值;己属性的值;如对象如对象b1拥有自己的实例成员变量拥有自己的实例成员变量price,其值为,其值为39.5;对象对象b2拥有自己的实例成员变量拥有自己的实例成员变量price,其值为,其值为52.5。本讲稿第五十五页,共七十七页 3.7.1 3.7.1 实例成员与类成员实例成员与类成员2.类变量类变量用关键字static修饰的变量为静态变量静态变量,也称为类变量类变量,系统运行时,整个类的静态变量只有一个拷贝;该类的所有对象对象共享类的静态变量静态变量;可以通过类名直接访问类变量,例如数学常数Math.PI就是静态的,直接通过类名Math访问类变量与实例变量的区别在于:类变量与实例变量的区别在于:实例变量是隶属一个具体对象,必须通过对象访问;类变量是属于整个类,既可以通过类访问,也可以通过对象访问;所有对象共享类所有对象共享类的静态变量的静态变量本讲稿第五十六页,共七十七页classCounterprivatestaticinttotal;privateintnumber;Counter()total+;number+;System.out.println(number=+number+/total=+total);publicclassStatisticspublicstaticvoidmain(Stringargs)for(inti=1;i6;i+)newCounter();定义私有的静态变量定义私有的静态变量total定义私有的实例变量定义私有的实例变量number定义构造函数,统计创建对象的个数定义构造函数,统计创建对象的个数所有对象共享类变量所有对象共享类变量total,每个对象,每个对象都有实例变量都有实例变量number的一个拷贝的一个拷贝【例例3-5】实例成员与类成员实例成员与类成员本讲稿第五十七页,共七十七页3.通过类名直接访问类变量通过类名直接访问类变量超类对象不能引用子类新增加的成员超类对象不能引用子类新增加的成员变量与成员方法;变量与成员方法;如果子类覆盖了超类的成员,该超类对象如果子类覆盖了超类的成员,该超类对象引用的是子类重写后的成员;引用的是子类重写后的成员;不能把超类对象的引用赋值给子类声明的不能把超类对象的引用赋值给子类声明的对象对象本讲稿第五十八页,共七十七页publicclassCirclestaticdoublePI=3.1415926;intradius;Circle(intr)radius=r;doublegetArea()doublearea=radius*radius*PI;returnarea;publicstaticvoidmain(Stringargs)System.out.println(圆周率的值:+Circle.PI);Circlec=newCi

    注意事项

    本文(第3讲面向对象类与对象精选文档.ppt)为本站会员(石***)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开