JAVA程序设计类与对象续.ppt_第1页
JAVA程序设计类与对象续.ppt_第2页
JAVA程序设计类与对象续.ppt_第3页
JAVA程序设计类与对象续.ppt_第4页
JAVA程序设计类与对象续.ppt_第5页
已阅读5页,还剩66页未读 继续免费阅读

下载本文档

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

文档简介

主讲教师:杨祥茂,2012年2月,教学辅助课件,教学辅助课件,JAVA程序设计,复习类与对象,1概念定义2描述形式3关键知识点封装,构造方法,引用传递,this,static,对象数组4典型例子火车的描述(链),特征,1一个火车是由若干车厢组成,每节车厢由数据和连接组成2每个火车节点的类包括(数据和指针)组成所以:属性包括data和next行为包括(1)构造方法(2)4个set和get语句,classNodeprivateStringdata;privateNodenext;publicNode(Stringdata)this.data=data;publicStringgetData()returnthis.data;publicvoidsetNext(Nodenext)this.next=next;publicNodegetNext()/实际上取得下一个节点的地址returnthis.next;publicclassnodetestpublicstaticvoidmain(Stringargs)Noderoot=newNode(火车头);/定义火车头Noden1=newNode(A车厢);/第一节火车Noden2=newNode(B车厢);/第二节火车Noden3=newNode(C车厢);/第三节火车root.setNext(n1);/连接火车头与第一节火车n1.setNext(n2);n2.setNext(n3);print(root);publicstaticvoidprint(Nodenode)System.out.println(输出数据);while(node!=null)System.out.print(node.getData()+t);node=node.getNext();,在现实中假定有一个人Person类,student类,可以分析得到:Student类的属性和Person属性可以得到Person属性有name和ageStudent类有属性name,age,school三个属性写成java的类就是,ClassPerson,ClassPersonprivateStringname;privateintage;publicStringgetName()returnname;publicvoidsetName(Stringname)=name;publicintgetAge()returnage;publicvoidsetAge(intage)this.age=age;,Classstudent,ClassStudentprivateStringname;privateintage;privateStringschool;publicStringgetName()returnname;publicvoidsetName(Stringname)=name;publicintgetAge()returnage;publicvoidsetAge(intage)this.age=age;publicStringgetSchool()returnschool;publicvoidsetSchool(Stringschool)this.school=school;,问题,在student类中,存在在Person类中的属性name和age,且有相同的set和get方法。现在希望在定义student类的时候,保留Person类中属性和方法。-继承,继承,类的继承格式:class父类/定义父类.class子类extends父类/子类继承父类例如,类继承示例,classPersonprivateStringname;privateintage;publicStringgetName()returnname;publicvoidsetName(Stringname)=name;publicintgetAge()returnage;publicvoidsetAge(intage)this.age=age;classStudentextendsPerson/不写任何代码,只是继承父类publicclassextendtest1publicstaticvoidmain(Stringargs)Studentstu=newStudent();stu.setName(张三);/访问父类的方法stu.setAge(20);/访问父类的方法System.out.println(姓名:+stu.getName()+年龄:+stu.getAge();,类继承,在子类中添加自己的属性和方法,classPersonprivateStringname;privateintage;publicStringgetName()returnname;publicvoidsetName(Stringname)=name;publicintgetAge()returnage;publicvoidsetAge(intage)this.age=age;classStudentextendsPersonprivateStringschool;publicvoidsetSchool(Stringschool)this.school=school;publicStringgetSchool()returnschool;publicclassextendtest1publicstaticvoidmain(Stringargs)Studentstu=newStudent();stu.setName(张三);/访问父类的方法stu.setAge(20);/访问父类的方法stu.setSchool(西南财经大学);System.out.println(姓名:+stu.getName()+年龄:+stu.getAge()+学校:+stu.getSchool();,类继承要注意的地方,1只允许多层继承,不允许多重继承。例如classAclassBclasscextendsA,B/同时继承两个类,是不允许的又如classA.classBextendsA/允许多层继承classscextendsB/允许多层继承2定义继承的子类叫做派生类3子类不能直接访问父类的私有成员,但是可以调用父类的非私有方法,可以通过get来访问父类的私有成员。例如;,子类访问限制,不能直接访问父类中的属性(成员),classStudentextendsPersonprivateStringschool;publicvoidsetSchool(Stringschool)this.school=school;publicStringgetSchool()returnschool;publicvoidfun()System.out.println(父类的name属性+name);/错误,无法访问System.out.println(父类的age属性+age);/错误,子类可以间接访问属性内容,classStudentextendsPersonprivateStringschool;publicvoidsetSchool(Stringschool)this.school=school;publicStringgetSchool()returnschool;publicvoidfun()System.out.println(“父类的name属性”+getName();/间接访问System.out.println(“父类的age属性”+getAge();/间接,继承的问题1:子类对象实例化过程,子类对象实例化的过程是先调用父类的构造方法,再调用子类的构造方法(就是先有父亲的行为再有儿子的行为)。例如,观察子类对象实例化过程,classPersonprivateStringname;privateintage;publicPerson()System.out.println(这是父类的构造方法);publicStringgetName()returnname;publicvoidsetName(Stringname)=name;publicintgetAge()returnage;publicvoidsetAge(intage)this.age=age;classStudentextendsPersonprivateStringschool;publicStudent()System.out.println(这是子类的构造方法);publicvoidsetSchool(Stringschool)this.school=school;publicStringgetSchool()returnschool;publicvoidfun()System.out.println(父类的name属性+getName();/System.out.println(父类的age属性+getAge();/publicclassextendtest1publicstaticvoidmain(Stringargs)Studentstu=newStudent();stu.setName(张三);/访问父类的方法,子类没有定义stu.setAge(20);/访问父类的方法,子类没有定义stu.setSchool(西南财经大学);/子类定义的方法System.out.println(姓名:+stu.getName()+年龄:+stu.getAge()+学校:+stu.getSchool();,说明,上述的子类调用父类的构造方法,先执行父类的构造方法再执行子类的构造方法。上述程序中的构造方法publicStudent()System.out.println(这是子类的构造方法);实际上在子类的构造方法中是这样的publicStudent()super();/调用父类的无参构造方法System.out.println(“子类的构造方法”);,继承问题2:继承父类中的方法覆写,继承父类中的方法覆写是指子类定义与父类相同名的方法。在覆写父类的方法中要考虑子类覆写的方法不能拥有比父类方法更严格的方法权限。前面介绍的权限Privatedefault(缺省)Objectp.setY(5);intx=(Integer)p.getX();/先转换为Integer,再自动撤箱inty=(Integer)p.getY();System.out.println(x=+x+y=+y);,classCircleprivateObjectr;publicCircle(Objectr)this.setR(r);publicvoidsetR(Objectr)this.r=r;publicObjectgetR()returnthis.r;publicdoublearea()return3.14*(Integer)this.getR()*(Integer)this.getR();publicclassgenericsdemopublicstaticvoidmain(Stringargs)Circlecir=newCircle(10);/自动装箱int-Integer-Objectintr=(Integer)cir.getR();/先转换为Integer,再自动撤箱System.out.println(r=+r+area=+cir.area();,classCircleprivateObjectr;publicCircle(Objectr)this.setR(r);publicvoidsetR(Objectr)this.r=r;publicObjectgetR()returnthis.r;publicdoublearea()return3.14*(Integer)this.getR()*(Integer)this.getR();publicc

温馨提示

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

评论

0/150

提交评论