第二部分 类与对象_第1页
第二部分 类与对象_第2页
第二部分 类与对象_第3页
第二部分 类与对象_第4页
第二部分 类与对象_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

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

文档简介

8/8第二部分类与对象一、本部分内容教学目标使学生理解面向对象程序设计思想;熟练掌握类的定义,域和方法的概念,构造方法与对象的创建和使用;掌握对象的初始化顺序;了解对象的清除与垃圾回收;掌握变量与变量的传递;掌握成员与类的访问控制;掌握接口的定义、实现与应用;掌握接口与抽象类的区别与联系;掌握package与import,了解类路径的设置方法;掌握继承的概念和语法,域变量的隐藏和方法的覆盖,构造方法的重载和继承及this与super的使用;掌握组合与多态的概念与应用;理解四种内部类的定义与使用。教学重点类、域和方法的定义方法;构造方法、主方法及一般方法的区别;对象的创建、初始化顺序;基本数据类型变量与引用数据类型变量的传递和返回;四种访问控制符与三种常用非访问控制符的使用;接口与抽象类的区别、定义及实现;继承、组合与多态的定义与使用;变量隐藏及方法覆盖在存的区别及其在存储方式上的差别。难点对面向对象程序设计思想的理解;从结构式的程序设计向面向对象程序设计的过渡;对对象的初始化顺序及构造方法的调用的掌握;用匿名类来设计程序。二、教案示例1。面向过程与面向对象程序实例比较.1)以面向过程的程序设计方式思考:a、确定长方形周长和面积的算法。b、编写两个方法(函数)分别计算长方形的周长和面积。c、求周长的方法(函数)和求面积的方法(函数)需要两个参数,分别是长方形的长和宽。程序示例1://面向过程求长方形周长与面积方法classRectangle1{ﻩstaticintperimeter(intlength,intwidth)ﻩ{ return2*(length+width); } staticintarea(intlength,intwidth)ﻩ{ﻩﻩreturnlength*width;ﻩ}ﻩpublicstaticvoidmain(String[]args) { System.out.println(”perimeter=”+Rectangle1.perimeter(5,4));ﻩﻩSystem.out。println("area="+Rectangle1.area(5,4));ﻩ}}2)以面向对象的程序设计方式思考:a、一个长方形可以看成一个长方形对象.b、一个长方形对象有两个状态(长和宽)和两个行为(求周长和求面积)。c、将所有长方形的共性抽取出来,设计一个长方形类.d、通过长方形对象的行为,就可以求出某个具体的长方形对象的周长和面积。程序示例2://面向对象求长方形面积与周长方法classRectangle{ﻩintlength,width; intperimeter() {ﻩ return2*(length+width); }ﻩintarea(){ﻩﻩreturnlength*width; }ﻩpublicstaticvoidmain(Stringargs[]){ﻩﻩRectanglerect1=newRectangle();ﻩﻩrect1。length=50;ﻩﻩrect1.width=10; ﻩSystem.out。println(rect1。perimeter()); System.out。println(rect1.area()); }}2.类的定义与对象创建classCar{ Stringmodel; publicCar(){}ﻩpublicCar(Stringmodel){this.model=model;} voidprintModel(){ﻩﻩSystem.out.println(”Themodelofthiscaris"+model/*this。model*/);; } publicstaticvoidmain(Stringargs[]){ﻩﻩCarmyCar1=newCar(); ﻩCarmyCar2=newCar("BMW”); ﻩSystem。out。println(myCar1.model); ﻩmyCar1.printModel(); }3.变量及其值传递classValueTransfer{ voidmodify(inti){ i++; }ﻩvoidmodify(int[]arr){ﻩ for(inti=0;i<arr.length;i++){ ﻩ arr[i]=1;ﻩﻩ} }ﻩﻩvoidmodify(SimpleClasss){ﻩ s.field=1;ﻩ} publicstaticvoidmain(String[]args){ﻩﻩValueTransferv=newValueTransfer();ﻩ intintValue=0; v。modify(intValue);ﻩﻩSystem。out。println(”intValue=”+intValue); ﻩ ﻩint[]intArr=newint[1];ﻩﻩintArr[0]=100; ﻩv.modify(intArr); ﻩSystem.out。println("intArr[0]=”+intArr[0]); ﻩSimpleClasss=newSimpleClass(); ﻩv.modify(s); System.out.println("s.field="+s。field);ﻩ}}classSimpleClass{ﻩintfield;}4.修饰符classCount{ﻩprivateintserial;ﻩprivatestaticintcounter=0;ﻩ Count(){ counter++; ﻩserial=counter;ﻩ} intgetserial(){ ﻩreturnserial;ﻩ}}classStaticVar{staticintx=100;}publicclassanli3_2{ﻩpublicstaticvoidmain(Stringargs[]){ ﻩCountc1=newCount(); ﻩCountc2=newCount(); ﻩSystem.out。println(c1.getserial());ﻩ System。out。println(c2.getserial()); System.out.println(StaticVar。x++); ﻩSystem.out。println(StaticVar。x++); }}5.接口与抽象类修改下列程序的错误:interfaceA{ doublePI=3.1415926; voidmethod();}interfaceB{ doublePI=3.1415926; voidmethod();}classCimplementsA,B,A{}classErrorsimplementsC{ﻩpublicstaticvoidmain(String[]args){ System.out.println(PI); }ﻩvoidmethod(){ﻩ System.out。println("method()called");ﻩ}}6.继承//方法的覆盖和变量的隐藏classParent{ inti=1;ﻩvoida(){ ﻩSystem.out。println("###"); }}publicclasseg4extendsParent{ﻩinti=100; voida(){ System。out.println("...");ﻩ} publicstaticvoidmain(Stringargs[]){ﻩﻩParentaa=neweg4(); ﻩaa.a(); ﻩSystem。out.println(aa.i); }}/**构造方法的重载和继承*/classa{ a(){System.out。println("aaa”);}ﻩa(inti){System.out.println("i="+i);}}classbextendsa{ b(){System。out.println("bbb”);}ﻩb(inti){System.out。println("i="+i);} publicstaticvoidmain(Stringargs[])ﻩ{ bb1=newb(); }}7。继承、组合与多态//继承与组合实例classnumber{ int[]a={1,2,3,4,5}; intsum=0;ﻩdoubleaverage=0.0; publicintsum(){ﻩﻩfor(inti=0;i〈a.length;i++){ﻩﻩ sum+=a[i];ﻩﻩ} ﻩreturnsum; } publicdoubleaverage(){ﻩ returnsum()/a。length;ﻩ}}classsonNumberextendsnumber{//ﻩnumbern=newnumber();ﻩintcount=0; publicintsum(){ ﻩcount++; returnsuper。sum();//n.sum(); }ﻩpublicdoubleaverage(){ ﻩcount++;ﻩ returnsuper。average();//n.average();ﻩ}ﻩpublicintcount(){returncount;}ﻩpublicstaticvoidmain(Stringargs[]){ﻩ sonNumbers=newsonNumber();ﻩﻩSystem。out.println(s.count());ﻩﻩSystem。out.println(s。sum()); System.out.println(s.count());ﻩ System.out。println(s。average());ﻩ}}8。对象初始化顺序//对象初始化顺序classguest{ﻩpublicguest(){System。out.println("Hello!");}}classdad{ﻩguestg=newguest();ﻩpublicdad(){System。out.println("Thisisdad。");} publicdad(Strings){System。out.println(s);}}classsonextendsdad{ dadd=newdad(”Thisisanti。");staticdadd1=newdad(”Thisisuncle.");publicson(){System。out.println(”ThisisTom。”);}publicstaticvoidmain(String[]args){ sons=newson();}}三、考核知识点类、域和方法的定义方法;构造方法、主方法及一般方法的区别;对象的创建、初始化顺序;基本数据类型变量与引用数据类型变量的传递和返回;四种访问控制符与三种常用非访问控制符的使用;接口与抽象类的区别、定义及实现;继承、组合与多态的定义与使用;变量隐藏及方法覆盖在存的区别及其在存储方式上的差别。四、课后练习与思考题1.类和对象的关系?2.==与equals()的区别?3.构造方法的特征?4.什么叫方法重载?5.编写一个userName类,包含两个成员变量:firstname,lastname;并仿照TestPerson1类构建两个构造器方法,一个是带参数,一个是不带参数(将它们初始化为firstname,lastname);最后构建一个fullName方法,用来返回全名。6。继承的含义,java中可以实现多继承吗,可以实现多重继承吗?7。方法重写和方法重载的区别?8.this关键字的作用?9。Static关键字可以用来修饰哪些成员。10.final关键字的作用?11.定义与实现接口的关键字分别是什么?12。接口能否继承接口?接口能否实现接口?接口能否被实例化?13。Java允许多接口实现吗?允许接口的多重继承吗?14.内部类的特点是什么?15。公司给员工发工资,定义一个员工类,使用构造方法的重载

温馨提示

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

评论

0/150

提交评论