




已阅读5页,还剩47页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第6讲Java面向对象程序设计,面向对象的程序设计方法按照现实世界的特点,把复杂的事务抽象为对象。对象具有自己的状态和行为,通过对消息的反应来完成一定的任务。面向对象是Java的重要特性。,一、Java面向对象基础,(一)类的定义,Java的类是由类声明和类体二部分构成,类声明定义的格式如下:类修饰符class类名extends父类名implements接口名,接口名类体,例:HelloWorldApp.javapublicclassHelloWorldApppublicstaticvoidmain(Stringargs)System.out.println(“HelloWorld!”);,类体定义的格式:class类名变量声明;方法声明;,例:classPointintx,y;voidinit(intix,intiy)x=ix;y=iy;,例:,publicclassCalculatorprivatedoubleresult;publicdoublea,b;publicdoubleCalculator()result=0;publicdoubleAdd()result=a+b;returnresult;publicdoubleMinus()result=a-b;returnresult;,组成一个类的组件如下:,import包类修饰符classxxxclassextends父类implements接口/类变量或称类字段/实例变量或称实例字段/构造函数/静态初始者/类方法/实例方法/内部类,(二)类的修饰符,public提供给其他类完全的存取权限。即:在同一包中的类可自由取用此类,而别的包中的类可通过import关键词来引入此类所属的包加以运用。,用public修饰的类有几个特性:1.一个程序里只能有一个类被修饰为public,否则编译会错。publicclassxxxClass()classaaaClass()classbbbClass()2.源文件存储文件名,必须是用public修饰的类名(xxxClass)3.若程序中没有任何public类,则文件名可任取。而如果文件名是程序中的一个类名,则该类被视作public,可供别的类存取。,final表示此类为“最终”类,别的类不能继承此类,其方法也不能被覆盖。例如java.lang.System类即为final类:publicfinalclassSystemextendsObject注意:我们可使用该类,但不能继承并覆盖其内容。用重复的两个修饰符public+final的意思是:此final类可被import来引用,但不能被继承。System类关系到系统层级控制,为了安全性,故必须为final类,以避免被覆盖。但final与abstract就不能复合来用,因为二者是相冲突的。,另外:final关键字也可用于修饰方法和变量,用final修饰的方法不能被覆盖,用final修饰的变量定义的同时必须赋初值且在程序中不能被赋值,final变量被认为是符号常量,习惯上用大写字母表示这些变量。,例:FinalTest.java,finalclassAfinaldoublePI=3.1416;finaldoublearea(doubler)return(PI*r*r);classFinalTestpublicstaticvoidmain(Stringargs)Aa=newA();System.out.println(area=+a.area(5.0);,abstract此字的英文意思是”抽象的”,”非实际的”。此修饰符可修饰类及方法。用abstract修饰的类只是先定义一些方法规格,然后让继承此类的子类来覆盖此规格的内容。即:抽象类不需给出类中每个方法的完整实现,要实现此方法必须要由子类的方法来覆盖。,abstract类与方法有下列特性:1.一个抽象类里可以没有定义抽象方法。但只要类中有一个方法是被声明为abstract,则该类必须为abstract。2.抽象类不能被实例化,即不能被new成一个对象实例。3.若一个子类继承一个抽象类,则子类需用覆盖的方式来实化该抽象父类中的抽象方法。若没有完全实化所有的抽象方法,则子类仍是抽象的。4.抽象方法可再与public、protected复合使用,但不能与final、private和static复合使用。,例:Abstract_Demo.java,abstractclassAabstractvoidcallme();voidmetoo()System.out.println(在A的metoo方法里);classBextendsAvoidcallme()System.out.println(在B的callme方法里);,classAbstract_Demopublicstaticvoidmain(Stringargs)Ba=newB();a.callme();a.metoo();,例:抽象类示例,默认修饰符如果一个类没有修饰符,就说明它具有默认的访问控制特性。这样的类只允许与该类处于同一个包中的类访问和调用,而不允许被其他包中的类使用。注意:Java中,外部类不能用private和protected修饰,内部类可以用private和protected修饰。,二、对象的创建和引用,(一)对象的定义,定义了用户自己的类之后,就可以用这个类去定义类的对象了。如:BoxmyBox;因为类可以当作是用户自行声明的复合数据类型,所以使用之前还需用new为其开辟存储空间。如:myBox=newBox();注:以上两步可合而为一BoxmyBox=newBox();接下来,可以利用成员运算符“.”来访问对象的各个成员变量。如:myBox.color=“Blue”;myBox.width=10.5;,总结:,对象的创建包括“声明”、“实例化”、“初始化”三步:声明:类型对象名;实例化:用new可以为一个类实例化多个不同的对象,这些对象分别占用不同的内存空间。初始化:执行构造函数。,(二)对象成员变量的引用引用格式:对象名.成员变量名,(三)对象方法的调用调用格式:对象名.方法名,例:BoxClass.java,classBoxStringcolor;doublewidth;doubleheight;doubledepth;doublevolume()returnwidth*height*depth;voidBoxMessage()System.out.println(盒子的颜色:+color);System.out.println(盒子的宽度:+width);,System.out.println(盒子的高度:+height);System.out.println(盒子的深度:+depth);publicclassBoxClasspublicstaticvoidmain(Stringargs)BoxmyBox=newBox();doublemyBoxVolume,Volume;myBox.color=Blue;myBox.width=10.5;myBox.height=20.6;myBox.depth=15.7;,myBoxVolume=myBox.volume();Volume=myBox.width*myBox.height*myBox.depth;System.out.println(体积是:+myBoxVolume);System.out.println(体积是:+Volume);myBox.BoxMessage();,Java中的变量,三、成员变量,成员变量是类的两大组成部分之一,因此类体中定义的变量都称之为成员变量,而方法体中定义的变量不能称之为成员变量。类变量(由static修饰)成员变量实例变量(没有static修饰),(一)成员变量的定义,格式:变量修饰符类型变量名=初值,变量名=初值;如:publicinta,b=12;protectedStrings=HotJava;,注意:若成员变量在定义时没有赋初值,则系统会为其自动进行初始化,但方法中的自动变量必须人为的赋初值。,(二)成员变量修饰符,1.存取性修饰符:控制类间的存取,包括public,protected,private;2.存在性修饰符:成员变量本身在类中存在的特性,包括static和final。,public修饰符public变量和方法是“公开”的,既允许变量自身所属的类访问,也允许同一个包中的其他类访问,还允许其他包中的类访问。protected修饰符protected变量和方法是“受保护”的,它们仅能被与该类处于同一个包中的类所直接存取和使用。private修饰符private变量和方法是“私有的”,除了声明它们的类外,不能被任何其他的类直接存取和使用。注:当变量和方法前不加以上三种修饰符时,被认为是默认访问级,只允许定义它的类自身以及在同一个包中的类访问和调用。,static修饰符用关键字static可以修饰类的成员变量及方法,使它们成为静态成员。如:staticinty=3;staticshowx()注意:用static修饰的变量称为类变量,用static修饰的方法称为类方法。类变量和类方法在使用时也和其他变量与方法不同。,例:,UseStatic.javaUseGeneral.javaStaticTest.java,final修饰符将变量或方法声明为final,可以保证他们在使用中不被改变。注意:被声明为final的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改;被声明为final的方法也同样只能使用,不能重载或覆盖。,例:FinalTest.java,finalclassAfinaldoublePI=3.1416;finaldoublearea(doubler)return(PI*r*r);classFinalTestpublicstaticvoidmain(Stringargs)Aa=newA();System.out.println(area=+a.area(5.0);,四、成员方法(成员函数),在Java中,成员变量和成员方法(成员函数)是类的两大组成部分,成员变量反映了类的性质,而方法(函数)反映了类的行为。,(一)成员方法的声明,声明格式:方法修饰符返回值类型方法名(参数表)方法体说明:定义方法时一定要给出返回值类型和参数表;没有返回值时,返回值类型记为void。如:publicstaticvoidmain(Stringargs)publicintarea(intlength,intwidth)returnlength,*width;,(二)成员方法修饰符,方法修饰符大部分的种类及意义与变量修饰符一样,不过多了一种存在性的abstract以及线程用的运作性修饰符synchronized。存取性:public,protected,private存在性:static,abstract,final运作性:synchronized,1.static修饰符此修饰符会使方法成为唯一的。与类的地位等同。不会因实例的产生而受影响。static方法在使用上,有几点注意事项:(1)static方法中只能使用static变量,否则编译会出错。(2)一个类的static变量和static方法,可直接用该类的名称,按以下方法来使用:类名.类方法类名.类变量类名.静态变量.静态方法,2.abstract修饰符抽象方法存在于抽象类中,并不建立程序代码,而是留给继承的子类来覆盖。被声明为abstract的方法不需要实际的方法体,只需给出方法的名称、返回值类型和参数表。格式:abstract返回值类型方法名(参数表);注:声明抽象方法时,并不用写出大括号。定义了abstract抽象方法的类必须被声明为abstract的抽象类。3.final修饰符被声明为final的方法不能被其他类变更方法里的内容,即使是继承的子类。,4.synchronized修饰符此方法修饰符用于同步化监控处理。被synchronized修饰的方法,一次只能被一个线程来使用。,(三)成员方法调用,1.简单调用:根据被调用的方法是否有返回值,有两种调用形式。(1)作为一条单独的语句(void)如:System.out.println(“”);(2)作为一个表达式(有返回值)如:s=area(3,4);,例:SquareDouble.java,publicclassSquareDoublepublicstaticvoidmain(Stringarg)doublea=10.0,x=0.0;x=square(a);System.out.println(“正方形面积是:”+x);publicstaticdoublesquare(doubley)returny*y;,2.根据调用方法的所在位置及其本身的性质,又分为几种不同情况。,(1)被调用的方法有可能是在本身这个类中,也有可能是在父类或其他的类中。(2)被调用的方法有可能是类方法,也有可能是实例方法。(3)主调方法有可能是类方法,也有可能是实例方法。方法调用的写法就要根据方法所在的位置及它本身的性质来进行调用。,上表的原则:,1.this与super不能用在由static修饰的类方法里。若放在其中,则会产生编译错误信息:non-staticvariablethiscannotbereferencedfromastaticcontextnon-staticvariablesupercannotbereferencedfromastaticcontext2.在类方法中可直接调用本身类方法,但不可直接调用实例方法。3.在实例方法中可直接调用本身类中的类方法与实例方法。4.this与super只能用在实例方法中。5.xx对象.xx方法的方式可用于任何情况里。,例:TestMethod.java,(四)成员方法参数的传递,参数可以是基本数据类型、数组和对象。,例:ArrayMaxMin.java(参数是数组),importjava.applet.Applet;importjava.awt.Graphics;publicclassArrayMaxMinextendsAppletpublicvoidpaint(Graphicsg)doubleMax,Min;doubledata=0.2,5.6,7.88,20.3,-0.234,3.22;Max=ArrayMax(data);g.drawString(Max=+Max,10,20);Min=ArrayMin(data);g.drawString(Min=+Min,10,40);,doubleArrayMax(doublearray)doublemax=array0;for(inti=1;imax)max=arrayi;retur
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2023-2029年中国马桶盖垫电商行业市场调查研究及发展战略规划报告
- 中国自动化输送设备行业市场发展前景及发展趋势与投资战略研究报告(2024-2030)
- 中国聚丁二烯橡胶行业发展现状及投资潜力预测报告
- 2025年中国电网信息化市场发展前景预测及投资战略咨询报告
- 中国通信工程施工行业市场深度分析及投资战略研究报告
- 中国出轴结合件行业市场发展前景及发展趋势与投资战略研究报告(2024-2030)
- 净水剂行业深度研究分析报告(2024-2030版)
- 中国无线网卡行业发展监测及市场发展潜力预测报告
- “小小梦想家”儿童创意教育商业计划书
- 中国江西省生活垃圾清运和处理市场调查研究及行业投资潜力预测报告
- 排污许可证申请流程
- 药具培训培训试题及答案
- 重庆市大渡口区2023-2024学年四年级下学期数学期末测试卷(含答案)
- 2025年高考全国一卷写作范文4篇
- 2025年广西公需科目答案03
- 2025届江苏省徐州市名校七下数学期末达标检测试题含解析
- 2025年山东夏季高中学业水平合格考模拟生物试卷(含答案)
- 大连海事大学育鲲轮电机员培训课件详解
- GB/T 45577-2025数据安全技术数据安全风险评估方法
- IgG4肾病的诊断和治疗
- 中国啤酒篮行业市场发展前景及发展趋势与投资战略研究报告2025-2028版
评论
0/150
提交评论