




已阅读5页,还剩29页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
面向对象的程序设计概念,对象与类,简单地说:对象是表示现实世界中某个具体的事物;类是对对象的抽象描述。,定义类,修饰符class类名extends父类implements接口名类成员变量声明;类方法声明;,Java实例定义类,classC/C是类名.intn=0;/定义変量.intm(inta)/定义方法.return2*a;,对象的定义,修饰符类名对象名=new类名(实参列表);或修饰符类名对象名;对象名=new类名(实参列表);,创建对象,类名对象名;(1)Cobj1=newC();注意:类属于复合数据类型,因此,在声明对象时,系统并没有为对象分配空间,用户需要应用new完成分配空间的任务。,(2)Cobj1obj1=newC();,Java实例创建对象,续接Java实例定义类Publicclass类名publicstaticvoidmain(Stringargs)Cobj1=newC();/()Cobj2;/()obj2=newC();,对象的引用,引用成员变量对象名.成员变量名引用方法对象名.方法名(参数列表)ExampleC,类的创建,classCvariable;method;Publicclassnamepublicstaticvoidmain(Stringargs)Cobj=newC();PublicclassCvariable;method;publicstaticvoidmain(Stringargs)Cobj=newC();ExampleC,d111,类的创建,创建对象,例:Pointp1;p1=newPoint(23,94);Rectangler1=newRectangle(origin_one,100,200);Rectangler2=newRectangle(50,100);,创建对象的三个步骤:声明(Declaration)实例化(Instantiation)初始化(Initialization),对象实例化过程,构造与初始化对象的过程(调用newXxxx():开辟内存空间(变量、方法体代码)及类成员变量的初始化:数值型:0;布尔型:false;引用型:null;字符串型:null;显式初始化:执行类成员声明时带有的简单赋值表达式。publicclassInitializedprivateintx=5;privateStringname=“Fred”;执行构造函数(对象的初始化)。,对象的初始化,类中包含有成员变量和方法,当使用类声明并创建对象时,使用new关键字,这时系统为对象创建自己的内存区域并自动调用构造方法初始化成员变量。,构造方法,构造方法是一个特殊的成员方法,它与类名相同。在创建对象空间后,系统自动根据参数调用相应的构造函数。构造函数的主要功能是为数据成员赋初值。,Java实例定义构造方法,classHH(inta)System.out.println(a=+a);Publicclassd112publicstaticvoidmain(Stringargs)Hobj=newH(123);/()Exampled112,构造方法的特点,构造方法名与类名相同;构造方法没有返回类型,也不是void;构造方法的主要作用是对类对象的初始化。如果没有定义构造方法时,各种类型的默认值;构造方法不能由编程人员显式地直接调用;使用不同数量、不同类型的参数对类初始化会拥有多个构造方法;ExampleClassAndObject,Java实例定义构造方法ExampleStudent,classStudentStringname;Stringaddress;Stringgrade;Student(Stringx1,Stringx2,Stringx3)/定义构造方法name=x1;address=x2;grade=x3;,publicstaticvoidmain(Stringargs)Studentzhang=newStudent(“张三”,“南昌路1号”,“2003级3班”);/声明并创建zhang对象Studentwang=newStudent(“王五”,“南昌路1号”,“2003级3班”);/声明并创建zhang对象System.out.println(+zhang.address+zhang.grade);System.out.println(+wang.address+wang.grade);,Java实例(续),使用new创建对象时,Java系统自动调用与类同名的构造方法。,如果在类定义中无构造函数,Java在编译时可缺省加入构造方法。如publicEmployee();一旦在类中有一个自己声明的构造函数,则缺省的构造函数将不被加到源程序中。,缺省构造函数,对象(object),计算机世界中的对象是把数据及其相关的操作封装在一起所构成的实体。封装的实体=数据+方法(行为)数据:属性或状态方法:作用于数据上的操作封装:属性的访问和变化通过方法完成,方法(method),方法是对象的行为方式(操作)对象与外界的接口作用改变对象的属性返回对象的属性,object1,object2,数据隐藏与封装,数据隐藏:使用private定义的成员变量,只能在成员方法中使用,其它方法中禁止使用。优点:保证对象中数据的一致性。封装:基本数据和对数据进行的操作方法的结合。优点:隐藏类中具体实现的细节。强迫程序员使用统一的接口访问数据。使代码可维护性好。,数据隐藏与封装举例,ClassDateprivateintday,month,year;voidsetDate(inta,intb,intc)day=a;month=b;year=c;intgetDayreturn(day)Dated1=newDate();d1.setDate(30,9,2001);/d1.day=30;(错误!);d1.getDay();,Java实例封装的实体,classMyDateprivateintday;privateintmonth;privateintyear;publicStringgetDate()returnday+/+month+/+year;publicvoidsetDate(inta,intb,intc)day=a;month=b;year=c;publicclassUseMyDatepublicstaticvoidmain(Stringargs)MyDated=newMyDate();d.setDate(12,05,2006);System.out.println(d.getDate();,五、类成员变量的定义,定义:访问权限符staticfinal类型变量名权限修饰符有:public、protected和privatestatic:在成员变量前说明该变量是静态变量。final:在成员变量前说明该变量是一个最终变量,修饰符this,将当前对象的引用变量传递给另一个方法;如果方法体内部定义的变量与成员变量名字相同或方法的入口参数与成员变量名相同。如:classTestColorintr,g,b;TestColor(intr,intg,intb)this.r=r;this.g=g;this.b=b;,Java实例this,publicclassVarTestprivateintx=1;privateinty=1;voidchangeVar(inta,intb)intx=a;/x使同名类成员变量隐藏inty=b;/y使同名类成员变量隐藏System.out.println(InchangVar:+x=+x+y=+y);this.y=b;/给类成员变量z赋值StringgetXYZ()returnx=+x+y=+y;publicstaticvoidmain(Stringargs)VarTestv=newVarTest();System.out.println(BeforechangVar:+v.getXYZ();v.changeVar(10,10);System.out.println(AfterchangeVar:+v.getXYZ();,类成员方法定义,一般格式:()throws方法是传值的,方法调用不会改变参数的值。当对象作为参数时,参数的值是该对象的引用,这时对象的内容可以在方法中改变,但是对象的引用不会改变。,举例,PublicclassPassTestfloatptValue;publicvoidchangeInt(intvalue)value=55;publicvoidchangeStr(Stringvalue)value=newString(different“);publicvoidchangeObjValue(PassTestref)ref.ptValue=99.0f;publicstaticvoidmain(Stringargs)Stringstr;intval;PassTestpt=newPassTest();val=11;pt.changeInt(val);System.out.println(“Intvalueis:”+val);str=newString(“hello”);pt.changeStr(str);System.out.println(“strvalueis:”+str);pt.ptvalue=101.0f;pt.changeObjValue(pt);System.out.println(“ptvalueis:”+pt.ptValue);,结果:IntValueis:11StrValueis:helloptvalueis:99.0f,重载(Overloading),含义:在同一个类中一个方法名被用来定义多个方法。classScreenpublicvoidprint(inti)publicvoidprint(floati)publicvoidprint(Stringstr)重载必须遵守原则:参数表必须不同,以此区分不同方法体。返回类型、修饰符可相同或不相同。,激活重载的构造函数,在一个构造函数中可以利用另一个构造函数。classEmployeeprivateStringname;privateintsalary;publicEmployee(Stringn,ints)name=n;salary=s;publicEmployee(Stringn)this(n,0);publicEmployee()this(“Unknown”);,Java类库,Java类库也称作JavaAPI(ApplicationProgrammingInterface)。在学习Java时,实际上学习内容分成两部分。第一部分是Java语言本身,以便编写自己的类;第二部分学会扩展Java类库的类。本书通过例子讨论了Java的大量类库的使用。,Java类库,Java中的包:Java为编写应用程序提供了丰富的预定义类库,这些预定义类库按相关类的范畴进行了分组,这些分组被称作包(package).一个包是一个已命名的类的集合,一个包还可以包
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年上半年黑龙江中医药大学附属第四医院招聘工作人员(15人)笔试备考试题含答案详解(完整版)
- 广发银行重庆市江北区2025秋招笔试综合模拟题库及答案
- 华夏银行廊坊市三河市2025秋招金融科技岗笔试题及答案
- 2023年度公务员考试《常识》题库试题【研优卷】附答案详解
- 华夏银行上海市静安区2025秋招无领导小组面试案例库
- 中信银行嘉兴市平湖市2025秋招数据分析师笔试题及答案
- 民生银行镇江市扬中市2025秋招笔试英文行测高频题含答案
- 浦发银行邯郸市邯山区2025秋招群面模拟题及高分话术
- 招商银行淄博市临淄区2025秋招金融科技岗笔试题及答案
- 招商银行乌鲁木齐市沙依巴克区2025秋招笔试综合模拟题库及答案
- 粮食培训考试题及答案
- 老年人护理冷热应用课件
- 政府法律顾问聘用合同
- 2025年共青团入团考试测试题库及答案
- 低空经济产业园产学研融合方案
- 2025年秋季学期安全主题班会教育记录
- 2025年6月浙江省高考物理试卷真题(含答案解析)
- 人教版2024九年级物理全一册新教材解读课件
- 医院保洁院感知识培训
- 医院安全生产检查表范本
- 艺术类院校教学创新计划
评论
0/150
提交评论