JAVA程序设计 第4章 使用类和对象编程.ppt.jsp_第1页
JAVA程序设计 第4章 使用类和对象编程.ppt.jsp_第2页
JAVA程序设计 第4章 使用类和对象编程.ppt.jsp_第3页
JAVA程序设计 第4章 使用类和对象编程.ppt.jsp_第4页
JAVA程序设计 第4章 使用类和对象编程.ppt.jsp_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第4章使用类和对象编程,计算机科学与工程学院,本章学习目标,掌握类和对象的基础知识掌握类和对象的创建与应用理解方法和成员变量的用途掌握方法的声明和调用学会使用构造方法编写简单的面向对象程序,4.1创建类,类和对象是面向对象的编程技术的核心概念。类是根据分析和处理问题的需要,对某一类现实事物的抽象;对象是实际存在的该类事物的每个个体。类是java程序的基本要素。类包括属性和方法。类定义对象的结构,对象是类的实例。编程时先定义类,再由类创建对象。,4.1.1引例,在第2章的引例中更好的体现面向对象的特点。即:设计一个求一元二次方程根的类,使用此类的对象就可求任何一个一元二次方程的根。,classQuedoublea,b,c;Que(doublex,doubley,doublez)a=x;b=y;c=z;voidmethod()doubled,x1,x2;d=b*b-4*a*c;if(dc,publicclassE4_3staticvoidprint(Strings,intt)System.out.println(s+t);staticvoidarea(inta,intb)Stringss=它们的和是:;intt=a+b;print(ss,t);ss=它们的积是:;t=a*b;print(ss,t);publicstaticvoidmain(Strings)inta,b;a=4;b=5;area(a,b);,注意:静态方法只能对静态方法调用,publicclassplimprivatebooleanok(intn)booleanflag=true;inti=2;for(;i=Math.sqrt(n);i+)if(n%i=0)flag=false;returnflag;protectedbooleanokluan(intn)if(ok(n),例:打印出100以内的所有孪生素数。,publicclassplimstaticvoidprint(inta)inti=0;for(;ia.length;i+)ai=ai*2;for(i=0;ia.length;i+)System.out.println(ai);classEx4_4publicstaticvoidmain(Strings)plima=newplim();plimb=newplim();intc=1,2,3,4,5;a.print(c);b.print(c);,4.2.5参数的传递,在调用一个带有形式参数的方法时,必须为方法提供实际参数,这就是参数的传递。在Java中,参数传递是以传值的方式进行,即将实际参数的值传递给形式参数,而不是将实际参数的地址传递给形式参数。,publicclassE4_2staticvoidswap(intx,inty)intt;t=x;x=y;y=t;System.out.println(x=+x+,y=+y);publicstaticvoidmain(Strings)inta=4,b=5;swap(a,b);System.out.println(a=+a+,b=+b);,运行结果:x=5,y=4a=4,b=5,4.2.6方法的重载,所谓方法的重载就是在类中创建了多个方法,它们具有相同的名称,但有不同的参数和不同的定义。方法的重载是对已有的同名方法的重新定义。调用方法时根据实参数确定调用哪个方法,classCalpublicstaticintabs(intx)if(x0)x=-x+5;returnx;publicstaticdoubleabs(doublex)if(x+b);staticvoidmoves(chara,charb,charc,intn)if(n=1)move(a,c,n);elsemoves(a,c,b,n-1);move(a,c,n);moves(b,a,c,n-1);publicstaticvoidmain(Stringargs)moves(A,B,C,4);,4.3对象,3.3.1创建对象,创建对象包括对象的声明和为对象分配内存。1、对象的声明类名对象名;2、为对象分配内存对象名=new类名(参数);,3、对象的内存模型(1)声明对象时的内存模型(2)对象分配内存后的内存模型(3)创建多个不同对象的内存模型,classPointintx,y;Point(inta,intb)x=a;y=b;publicclassApublicstaticvoidmain(Stringargs)Pointp1,p2;p1=newPoint(10,10);p2=newPoint(23,13);,classPointintx,y;Point()x=1;y=1;Point(inta,intb)x=a;y=b;voidprint()System.out.println(x=+x+y=+y);classApublicstaticvoidmain(Stringargs)Pointa1=newPoint();Pointa2=newPoint(10,10);a1.print();a2.print();a1=a2;a1.print();a2.print();,内存会自动释放,classCircledouble半径;Circle(doubler)半径=r;double求面积()return3.14*半径*半径;void修半径(doubler)半径=r;classCircularCircle底圆;double高;Circular(Circle圆,doubleh)底圆=圆;高=h;double求体积()return底圆.求面积()*高/3.0;void修底圆半径(doubler)底圆.修半径(r);classApublicstaticvoidmain(Stringargs)Circlecircle=newCircle(10);Circularcircular=newCircular(circle,20);System.out.println(圆锥的底圆半径:+circular.底圆.半径);System.out.println(圆锥的体积:+circular.求体积();circular.修底圆半径(100);System.out.println(圆锥的底圆半径:+circular.底圆.半径);System.out.println(圆锥的体积:+circular.求体积();,4.3.2使用对象,通过使用运算符“.”,对象可访问自己的变量和方法。对象名.成员变量名对象名.方法名(参数表),classAintx,y;privatevoidset(intx,inty)this.x=x;this.y=y;voidprint()System.out.println(x=+x+y=+y);publicstaticvoidmain(Stringargs)Aa1=newA();Aa2=newA();a1.x=8;a1.y=9;a2.set(9,8);a1.print();a2.print();,classPointintx,y;privatevoidset(intx,inty)this.x=x;this.y=y;voidprint()System.out.println(x=+x+y=+y);classApublicstaticvoidmain(Stringargs)Pointa1=newPoint();Pointa2=newPoint();a1.x=8;a1.y=9;a2.set(9,8);/错误的语句a1.print();a2.print();,4.3.3垃圾回收,Java虚拟机会自动回收那些无用对象所占用的内存,这种机制叫垃圾回收。注意,一个对象运行时可能会和其他对象相关联,因此当对象被销毁时需做一些善后处理,java中用finalize()方法实现处理。protectedvoidfinalize().,4.4静态变量和静态方法,静态变量可通过类名和对象引用,它属于类,所有对象共用此变量。而实例变量属于对象,只能通过对象引用。静态方法可通过类名和对象名引用。静态方法不能访问非静态变量,也不能调用非静态方法。,classStudentStringname;Stringaddr;staticStringschool;Student(Stringa,Stringb,Stringc)name=a;addr=b;school=c;Student();classApublicstaticvoidmain(Stringargs)Students1,s2;s1=newStudent();s2=newStudent(张明,银川市,西北第二民族学院);System.out.println(s1.school);System.out.println(s2.school);Student.school=北方民族大学;System.out.println(s1.school);System.out.println(s2.school);,4.5构造方法,构造方法是一种特殊的方法,它的名字必须与类名相同,不返回任何数据类型,也不是void型。当使用new关键字创建一个对象时,系统将自动调用构造方法去初始化对象。构造方法的主要作用是初始化对象的成员变量,若没有构造方法,java会使用默认值初始化成员变量。一个类可有多个构造方法。子类可以继承父类的构造方法。注意:若类中定义了构造方法,就必须使用它初始化对象,不能调用默认的构造方法了,classTiXingfloat上底,下底,高,面积;void设置梯形(floata,floatb,floatc)上底=a;下底=b;高=c;float求面积()面积=(上底+下底)*高/2.0f;return面积;publicstaticvoidmain(Stringargs)TiXingtx=newTiXing();System.out.println(tx.求面积();tx.设置梯形(5,6,4);System.out.println(tx.求面积();,classTiXingfloat上底=5.0f,下底=8.0f,高=1.0f;float面积;void设置梯形(floata,floatb,floatc)上底=a;下底=b;高=c;float求面积()面积=(上底+下底)*高/2.0f;return面积;publicstaticvoidmain(Stringargs)TiXingtx=newTiXing();System.out.println(tx.求面积();tx.设置梯形(5,6,4);System.out.println(tx.求面积();,classTiXingfloat上底,下底,高,面积;TiXing(floata,floatb,floatc)上底=a;下底=b;高=c;TiXing()上底=10.0f;下底=15.0f;高=5.0f;float求面积()面积=(上底+下底)*高/2.0f;return面积;publicstaticvoidmain(Stringargs)TiXingtx1=newTiXing();System.out.println(tx1.求面积();TiXingtx2=newTiXing(3.0f,4.0f,5.0f);System.out.println(tx2.求面积();,classTiXingfloat上底,下底,高,面积;TiXing(floata,floatb,floatc)上底=a;下底=b;高=c;TiXing(floata,floatc)上底=a;下底=a;高=c;float求面积()面积=(上底+下底)*高/2.0f;return面积;publicstaticvoidmain(Stringargs)TiXingtx1=newTiXing();/错误的语句System.out.println(tx1.求面积();TiXingtx2=newTiXing(3.0f,4.0f,5.0f);System.out.println(tx2.求面积();,Java允许在一个类的内部定义另一个类,后者称为内部类,前者成为封装类,也叫外部类。它们存在逻辑上所属关系。引入内部类的好处在于可使源代码更加清晰并减少类的命名冲突,就好比工厂指定内部通用的产品或工艺标准,可取任何名称而不必担心和外界的标准同名。,4.6内部类,classLtridoublehigh;classTridoublea,b,c;Tri(doublex,doubley,doublez)a=x;b=y;c=z;doublearea()doubled=(a+b+c)/2;returnd*(d-a)*(d-b)*(d-c);Tritt;doubletarea()returntt.area()*high/3;classE_32publicstaticvoidmain(Stringargs)Ltrill=newLtri();ll.tt=ll.newTri(2,3,4);ll.high=4.0;System.out.println(ll.tarea();,classAintx;classBinty;B(inty)this.y=y;voidprint()System.out.println(y);voidprint()Bb=newB(5);b.print();System.out.println(x);publicstaticvoidmain(Stringargs)Aa=newA();a.print();,内部类不能与包含它的类同名;内部类可以是外层类的子类;内部类的对象必须依赖于外层封装类的对象才能存在内部类可访问外层类的所有属性和方法内部类可声明为抽象类或final;可声明为protected,private可声明为static,但不能访问封装类中的非static属性和方法非static内部类的成员不能声明为static匿名内部类通常用于处理事件程序,需要注意的一些问题:,classAintx;classBinty;B(inty)th

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论