




已阅读5页,还剩28页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第四讲类、对象,1.面向对象概述2.类与类成员(变量)3.对象及其创建与应用4.类的成员方法,1.面向对象概述(三大特性)封装性:是指将描述某种实体的数据和基于这些数据的操作集合到一起,形成一个封装体。封装体内数据受到保护,通过与外界的接口实现信息交流。继承性:继承反映了两个类之间的一般性和特殊性的关系。当一个类拥有另一个类的所有数据和方法时,称这个类继承了另一个类,这两个类具有继承关系。继承分为单重继承和多重继承。JAVA不支持多继承,但通过接口可以弥补不支持多继承而带来的子类不可使用多个父类成员的不足。多态性:多态性是指程序中出现的同名不同意现象,2.类与类成员(变量)类是java程序的基本单位,一种自定义的数据类型,又称为类类型。它是同种对象的抽象/模板,对象称为类的实现/实例。,类的定义格式classextendsimplements说明:关键字class声明一个新类,声明不是创建。关键字extends说明定义的新类是哪个已存在类的子类。父类可以是java语言库中定义的类,也可以是自己定义好的类。,关键字implements,说明当前定义的新类中实现那些接口所定义的功能和方法。类修饰符用来说明类的作用域和其它性质,有4种:public:说明该类为公共类,它可以被其他类所使用。一个文件中最多只能有一个public类。abstract:使用该修饰符的被称为抽象类。抽象类是一种没有具体对象的概念类。不能创建实例。final:说明该类不能有子类,故称为最终类。这种类是用来完成某种标准功能的类。final和abstract不能用来同时修饰一个类。默认说明:规定该类只能被同一个包中的类使用,而不能被其他包中的类所访问。,类体的内容:由两部分构成:一部分是变量的定义,用来刻画属性;另一部分是方法的定义,用来刻画功能。例:定义一个描述学生3门课成绩的类。,classStudentStringname,stuNumber;doublescore1,score2,score3;name=“zhangsan”;voidsetBase(Strings1,Strings2)name=s1;stuNumber=s2;System.out.println(name+stuNumber);doublesetScore(doubled1,doubled2,doubled3)doubled;score1=d1;score2=d2;score3=d3;d=d1+d2+d3;returnd;,变量成员变量可以是简单变量,也可以是某个类的对象,还可以是数组和其它复杂结构。成员变量的定义格式简单成员变量的定义格式:=;对象成员的定义格式:=new();,变量的修饰符:有访问控制修饰符和非访问控制修饰符。非访问控制修饰符:(1)静态变量static。静态变量属于类,属于所有对象的共享变量。静态变量的引用可以使用类名,也可以使用对象。例:Student.java中加入学生个数。(2)最终变量final。最终变量就是常量,不允许修改,最终变量通常被说明为static。(3)易失变量volatile。被volatile修饰的变量可能同时被多个线程所控制和修改。,/修饰符static练习,文件名Stu.javaclassStudentStringname,stuNumber;staticintcount;/学生个数doublescore1,score2,score3;voidsetBase(Strings1,Strings2)name=s1;stuNumber=s2;System.out.println(name+“:+s1);doublesetScore(doubled1,doubled2,doubled3)doubled;score1=d1;score2=d2;score3=d3;d=d1+d2+d3;returnd;,publicclassStupublicstaticvoidmain(Stringargs)Students1=newStudent();/构造方法s1.count+;System.out.println(s1.count);Students2=newStudent();/构造方法s2.count+;System.out.println(s1.count);,运行结果为:12,访问控制修饰符(1)私有访问控制private。使用该修饰符说明的变量仅可被该类自身访问,任何其他类都不可访问,包括该类的子类。(2)默认访问控制符。类中变量若无访问控制符,则具有包访问性,可被同一个包的其他类所访问。(3)保护访问控制符protected。使用该修饰符说明的变量可被该类自身、同包的其他类和其他包中该类的子类所访问。(4)公有访问控制符public。具有该修饰符的变量称为公共变量。如果它属于公共类,可以被所有类所访问。,变量小结:1)成员变量和局部变量:变量定义部分所定义的变量称为类的成员变量。方法体中所定义的变量和方法的参数称为局部变量。成员变量在整个类内都有效,局部变量只在定义它的方法中有效。,classSunintdistance;intfind()inta=12;distance=a;returndistance;voidg()inty;y=a;,/合法,/非法,2)如果局部变量的名字与成员变量的名字相同,则成员变量被隐藏,即这个成员变量在这个方法内暂时实效。如果想在该方法内使用成员变量,必须使用关键字this。(关键字this用法1:this.xxx代表成员变量)classTomintx=98,y;voidf()intx=3;y=x;,/y=?3or98,y=this.x;,this指的是当前对象;this有时可省略(成员变量的名字和局部变量的名字相同时不可省略)。,3)成员变量又分为实例成员变量和类成员变量。,3.对象及其创建与应用对象的声明、创建格式;/声明=new();/创建或写成:=new();创建对象包含声明对象;用new为对象分配内存单元;为对象初始化3方面的内容。,构造方法,classPointintx,y;Point(inta,intb)x=a;y=b;publicclassApublicstaticvoidmain(Stringargs)Pointp1,p2,p3;p1=newPoint(10,10);p2=newPoint(5,6);p3=p1;,对象的内存模型(理解),1)声明对象时的内存模型Pointp1;2)为对象分配内存后的内存模型p1=newPoint(10,10);系统会为各个成员变量(x,y)分配内存单元,没有指定初值则使用默认值;接着返回一个引用(地址)给对象变量p1。以确保这些变量能被对象p1操作。,效果如图:,3)创建多个对象p1=newPoint(10,10);p2=newPoint(5,6);,4)对象赋值.可以将同一个类的一个已知对象赋值给另一个对象。赋值时是将这个对象的地址值赋值给另一个对象的地址值,两个具有相同地址值的对象实际上是一个对象,它具有两个名字。p3=p1;,p1,0 xAB12,xy,p3,0 xAB12,创建一个对象必须用构造方法,构造方法的最主要功能是对创建的对象进行初始化。特点:方法名同类名;无返回类型(省去void);在创建对象时,系统自动调用。多个构造方法的问题:构造方法可以没有参数,也可以由多个参数,.ie.构造方法可重载(出现多个构造方法)。构造方法不能被编程人员调用,在用new建类的对象时,由系统自动根据实参个数类型调用,参数传递和形实结合也在此时完成。=new();定义类时如果不定义任何构造方法,系统会自动生成一个默认的无参数的构造方法,使用它所创建的对象具有默认值。但是一旦定义了带参数的构造方法,则无参数的构造方法自动失效,如果要用,则必须显式定义.好的习惯:?,构造方法,/检查构造方法应用错误语句classPointintx,y;Point(inta,intb)x=a;y=b;publicclassApublicstaticvoidmain(Stringargs)Pointp1,p2;p1=newPoint(10,10);p2=newPoint();,/错误为什么?,/构造方法中使用this(this用法2:构造方法重载时,在一个构造方法首行调用其它构造方法)classPointintx,y,z;Point()Point(inta,intb)x=a;y=b;Point(inta,intb,intc)/以下两句等价于this(a,b);x=a;y=b;z=c;,4.类的成员方法方法定义格式:()throws说明:方法说明中必须包含类型、方法名和一对圆括号;方法体是由一对花括号括起来的若干条语句,其中包含说明语句和执行语句,也可以为空。,方法的参数和返回值定义方法时可以有参数,也可以无参数,有多个参数用逗号分割,每个参数由参数类型和参数名组成。有些方法有返回值,有些方法无返回值,无返回值的方法定义时要加void,返回值可以用return来实现:return;要求:表达式的类型与方法中定义的返回值类型相一致静态方法,意同静态变量。this关键字不能用在静态方法中。,方法重载:在形式上是在同一个类中具有相同名字,但或者参数个数、或者参数的类型不同的若干个方法。目的:重载通常用于创建执行类似任务的同名、但参数类型或参数个数不同的方法,程序会自动根据给出的实参来匹配到底选择哪一个方法。(多态性的体现)例:intadd(inti,intj)returni+j;floatadd(floati,floatj)returni+j;doubleadd(doublei,doublej)returni+j;intadd(inti,intj,intk)returni+j+k;,匹配原则:1)完全匹配为最佳方案。2)如果不能完全匹配时,尽量选择类型转换代价最小的一种方案进行匹配。转换匹配遵循下述原则:(1)参数不能转换的重载方法不能参加匹配。如布尔(2)算术类型通常可以相互转换,选择代价最小的参加匹配。如add(a,b)(3)复合类型作为参数时,子类对象可转换为父类对象,子类层次最小的方法才会匹配。,publicclassOverloadstaticintadd(inti,intj)returni+j;staticdoubleadd(doublei,doublej)returni+j;publicstaticvoidmain(Stringargs)inti1=3,i2=5;charc1=a,c2=b;floatf1=3.1f,f2=4.1f;doubled1=2.5,d2=3.8;System.out.println(add(i1,i2);System.out.println(add(c1,i1);System.out.println(add(i1,f1);System.out.println(add(f1,d1);System.out.println(add(d1,i2);,方法的调用调用方式、参数传递返回值抛出异常(中断)参数传递问题:基本数据类型作为方法参数时,参数传递的是变量值的一份拷贝,因此,不能改变调用方法中的参数值。复合数据类型作为方法参数时,参数传递的是对象的地址,因此,对参数的改变会影响到原来的参数值。方法调用练习1递归求fibonacci数列2复合类型:编写一个方法,能把一个整型数组按升序排序,publicclassApublicstaticvoidmain(Stringargs)intarray=5,4,3,2,1;inta=0;intb=0;conveyValue(a,b);System.out.println(a=+a+,b=+b);converAddress(array);for(inti=0;iarray.length;i+)System.out.println(array+i+=+arrayi);staticvoidconveyValue(intx,inty)x+=2;y+=3;System.out.println(x=+x+,y=+y);,staticvoidconverAddress(intarray1)for(inti=0;iarray1.length;i+)array1i+=1;System.out.println(array1+i+=+array1i);,类成员(静态成员、实例成员)调用注意事项:1)实例方法既能对类变量操作也能对实例变量操作。classAinta;staticintb;voidf(intx,inty)a=x;b=y;staticvoidg(intz)b=23;a=z;,/非法,2)一个类中的方法可以互相调用,实例方法可以调用该类的其他方法;类方法只能调用该类的类方法,不能调用实例方法。3)调用静态方法,通常使用类名,也可以使用某个对象名。,方法使用总结:1.类的内部:类(静态)成员不能调用非静态成员2.类的外部:通过类名或对象名调用,但要注意重载问题传参问题等;,classAinta;staticintb;voidsetab(inti)a=i
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 新疆北庭希望环保科技有限公司吉木萨尔县25万吨-年危废处理利用项目(2)环评报告
- 某著名企业DeepSeek系列09DeepSeek政务应用场景与解决方案
- 工业废水处理与绿色工艺技术
- 工业废气治理技术与方法探讨
- 工业大数据的分析与应用
- 工业建筑设计及自动化机电系统
- 工业污染防治与绿色制造技术分析
- 工业网络通信协议与技术标准
- 工业生产中的设备优化管理
- 工业生产中的节能减排措施与实践
- 项目重点难点分析及应对措施
- 24春国家开放大学《客户关系管理》形考作业1-4参考答案
- 火焰原子吸收光谱法测定铜的含量结果分析
- 2024年煤矿电气失爆专题培训课件
- 《电机与电气控制》期末考试复习题库(含答案)
- MOOC 电子线路设计、测试与实验(一)-华中科技大学 中国大学慕课答案
- 高速公路交通事故处理流程与责任认定
- 观光电梯方案
- 盲人心理健康讲座
- 混凝土箱涵技术规程
- 电力电子技术在电力系统中的应用
评论
0/150
提交评论