第八章定义类方法_第1页
第八章定义类方法_第2页
第八章定义类方法_第3页
第八章定义类方法_第4页
第八章定义类方法_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

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

文档简介

第八章

类与对象程序设计方法的发展过程小作坊设计模式硬件成本高,软件便宜,编程讲究技巧,编程人数少结构化程序设计硬件成本低,软件成本高,编程讲究可维护性,编程人数多面向对象程序设计硬件成本低,软件代码动辄百万行,软件危机,编程人数多程序设计方法公共数据函数函数函数函数算法+数据结构数据方法方法数据方法方法过程式程序设计OOP程序设计对象+消息消息一、面向对象的基本概念符合人们日常自然的思维习惯;降低、分解问题的难度和复杂性,提高软件的可重用性、可扩展性、可管理性;获得较高效率和较满意效果。面向对象程序设计的优点:类与对象对象是表示现实世界中某个具体的事物;类的某一个对象则被称为是类的一个实例,是类的实例化结果。类是对对象的抽象描述。是一种抽象的数据类型,它是所有具有一定共性的对象的抽象,是创建对象的“模板”。在现实世界中,是从对象提炼出类的概念;在编程时,是先有类,然后通过类来创建对象张三

类(CLASS)

如:“classman”对对象进行抽象为类对类进行实例化对象(1)所有东西都是对象。可将对象想象成一种新型变量;它保存着数据,但可要求它对自身进行操作。(2)程序是一大堆对象的组合;通过消息传递,各对象知道自己该做些什么。(3)每个对象都有一种类型。根据语法,每个对象都是某个“类”的一个“实例”。其中,“类”(Class)是“类型”(Type)的同义词。对象的属性与方法对象是面向对象的程序设计模式,它由描述状态的属性(变量)和用来实现对象行为的方法(代码)组成。计算机世界中的对象是把数据及其相关的操作封装在一起所构成的实体。封装的实体=属性(数据)+方法(行为)几种叫法属性—静态属性—域—成员变量状态方法—动态属性—成员方法行为消息(message)消息

对象之间相互请求或相互协作的途径,是要求某个对象执行某项操作的规格说明消息传递的三个要素:消息的接收者接收对象中哪个方法完成指定动作此方法需要的参数发送对象

发出消息,请求接收对象响应接收对象

收到消息后,经过解释,激活方法,予以响应消息的格式所谓对一个对象发信息,就是调用该对象的一个方法。

对象名.方法名([参数])

如:Math.max(a,b);Integer.parseInt(str);String.length();

方法(method)方法是对象的行为方式(操作)对象与外界的接口作用

改变对象的属性返回对象的属性object1object2二、定义类[修饰符]

class类名

[extends父类][implements接口名]

{

成员变量声明;构造器声明方法声明;}Java实例——定义类publicclassdogs{

publicStringName;publicintWeight;publicintHeight;

publicvoidShowDog(Stringn,intx,inty){Name=n;Weight=x;Height=y;}publicvoideat(){System.out.println("Dogseatbone.");}publicvoidbark(){System.out.println("Adogwillbarkatstrangers.");}}Java实例——定义类classPoint{

privateintx,y;

publicvoidsetPoint(inta,intb){x=a;y=b;}

publicintgetX(){returnx;}publicintgetY(){returny;}publicStringtoString(){return"["+x+","+y+"]";}}三、定义对象[修饰符]

类名

对象名;对象名=new

类名(实参列表);或[修饰符]

类名

对象名=new

类名(实参列表);定义对象通常包括:声明对象、创建对象和初始化对象三步。1、声明、创建对象

类名对象名;

PointthePoint;注意:类属于复合数据类型,因此,在声明对象时,系统并没有为对象分配空间,用户需要应用new完成分配空间的任务。thePoint=newPoint();2、引用对象引用成员变量

对象名.成员变量名引用方法

对象名.方法名(参数列表)publicclassCircle{floatr;finaldoublePI=3.14159265;publicvoidsetR(floatx){r=x;}publicdoublearea(){returnPI*r*r;}publicdoubleperimeter(){return2*PI*r;}publicstaticvoidmain(String[]args){doublex,y;Circlecir=newCircle();cir.setR(12.5f);System.out.println("圆的面积为:"+cir.area()+"\n圆的周长为:"+cir.perimeter());}}classPoint{privateintx,y;publicvoidsetPoint(inta,intb){x=a;y=b;}publicintgetX(){returnx;}publicintgetY(){returny;}publicStringtoString(){return"["+x+","+y+"]";}publicdoubledistance(Pointa){returnMath.sqrt((a.getX()-x)*(a.getX()-x)+(a.getY()-y)*(a.getY()-y));}}classPointDemo{publicstaticvoidmain(Stringargs[]){Pointsource=newPoint();Pointtarget=newPoint();source.setPoint(0,0);target.setPoint(5,8);System.out.println(“第一个点的坐标位置为:"+source.toString());System.out.println(“第二个点的坐标位置为:"+target.toString());System.out.println(“两点的距离为:"+source.distance(target));}}3、初始化对象

类中包含有成员变量和方法,当使用类声明并创建对象时,使用new关键字,这时系统为对象创建自己的内存区域并自动调用构造器初始化成员变量。Java实例——创建对象classEmployee{Stringname;intage;floatsalary;voidprint(){System.out.println(name+“年龄为:”+age+“月薪为:”+salary);}}

Employeee=newEmployee();=“张立”;e.age=21;e.salary=528.37F;e.print();实例变量—成员变量其生命周期与对象存在的时间相同。用构造器初始化对象classEmployee{Stringname;intage;floatsalary;

Employee(Stringn,inta,floats){name=n;if(a>=18&&a<=60)age=a;else{System.out.println("illegalage");System.exit(1);}salary=s;}voidprint(){System.out.println(name+“年龄为:”+age+“月薪为:”+salary);}}Employeee=newEmployee(“张立”,21,528.37F);e.print();构造器(构造方法)构造器是一个类的方法中方法名与类名相同的方法。当使用new关键字创建一个对象,为新建对象开辟了内存空间之后,系统自动根据参数调用相应的构造器来初始化这个新建对象。构造器的主要功能是为数据成员赋初值。构造器的特点构造器名与类名相同;构造器没有返回类型,也不是void;构造器能够简化对象数据成员的初始化操作。如果不定义构造器,此时系统会自动为该系统生成一个默认的没有任何参数的构造器,并使用缺省值来初始化实例变量;构造器不能显式地直接调用,总是和new运算符一起被调用;使用不同数量、不同类型的参数对类初始化会拥有多个构造器,这种现象称为构造器的重载;构造器可以继承,即子类可以继承父类的构造器。对象的创建和使用步骤定义类声明引用类型的变量创建对象,把指向对象的引用放到引用类型变量中使用变量的属性和方法释放变量所占空间Java实例——定义构造方法publicclassStudents{Stringname;Stringaddress;Stringgrade;intscore;publicvoidsetMessage(Stringx1,Stringx2,Stringx3){name=x1;address=x2;grade=x3;}publicvoidsetScore(inty){score=y;}publicstaticvoidmain(Stringargs[]){Studentszhang=newStudents();zhang.setMessage("张三","西安市兴庆路1号","2003级国际贸易3班");zhang.setScore(90);Studentswang=newStudents();wang.setMessage("王五","西安市翠华路12号","2003级电子技术3班");wang.setScore(85);System.out.println(+zhang.address+zhang.grade+zhang.score);System.out.println(+wang.address+wang.grade+wang.score);}}publicclassStudent{Stringname;Stringaddress;Stringgrade;intscore;Student(Stringx1,Stringx2,Stringx3,inty){name=x1;address=x2;grade=x3;score=y;}publicstaticvoidmain(Stringargs[]){Studentzhang;zhang=newStude

温馨提示

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

评论

0/150

提交评论