025-026 面向对象编程.ppt_第1页
025-026 面向对象编程.ppt_第2页
025-026 面向对象编程.ppt_第3页
025-026 面向对象编程.ppt_第4页
025-026 面向对象编程.ppt_第5页
已阅读5页,还剩44页未读 继续免费阅读

下载本文档

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

文档简介

手机游戏JAVA语言基础,第4章面向对象编程,第4章面向对象编程,继承包访问控制修饰符抽象类接口,继承访问控制修饰符接口,继承接口,掌握Java面向对象程序设计,第4章面向对象编程,4.7继承,4.7.1继承的概念和使用,面向对象程序设计的特性之一就是允许编程者在已定义的类的基础上建立新的类。作为新类的基础的类可以是程序员自己实现的类,也可以使Java标准类库中的类。在已有类的基础上通过继承或扩展的机制来实现类的重用,能够极大的提高编程效率。,第4章面向对象编程,4.7继承,4.7.1继承的概念和使用,基于现有的类定义新类的做法称为派生(derivation)。新的类或派生类被称为派生它的类的子类(subclass)。原有的类叫基类(baseclass)、父类或超类(superclass)。父类也可以有自己的父类,子类也可以有子类。,第4章面向对象编程,4.7继承,4.7.1继承的概念和使用,子类是作为另一个类的扩充或修正所定义的一个类。,第4章面向对象编程,Java中不支持多重继承。通过在类的声明中加入extends子句来创建一个类的子类。,格式为:,classSubClassextendsSuperClass/bodyofclass,4.7继承,4.7.1继承的概念和使用,第4章面向对象编程,4.7继承,4.7.1继承的概念和使用,继承是子类利用父类中定义的方法和变量,就像它们属于子类本身一样。,子类包括超类的所有成员,但不能访问父类中被声明为private的成员。,如果一个类没有显式的继承任何类,则默认继承Object类。,第4章面向对象编程,4.7继承,4.7.2方法的覆盖,如果在子类中定义一个方法,其名称、返回类型及参数列表与父类中方法的名称、返回类型及参数完全一样,那么新方法被称做覆盖旧方法。其作用是:有时候,可能觉得父类中的方法不能满足需要,覆盖使得在子类中可以重新定义父类中已有的方法,从而体现出子类自己的行为。,第4章面向对象编程,4.7继承,4.7.2方法的覆盖,classCarintcolor_number;intdoor_number;intspeed;publicvoidpush_break()speed=0;publicvoidadd_oil(),classTrash_CarextendsCardoubleamount;publicvoidfill_trash()publicvoidpush_break()speed=speed10;,覆盖的示例:,第4章面向对象编程,子类能创建一个与父类方法有不同功能的方法,但具有相同的名称返回类型参数表,4.7继承,4.7.2方法的覆盖,第4章面向对象编程,4.7继承,4.7.2方法的覆盖,方法覆盖时应遵循的原则:1)覆盖后的方法不能比被覆盖的方法有更严格的访问权限;2)覆盖后的方法不能比被覆盖的方法产生更多的异常。,第4章面向对象编程,4.7继承,4.7.3this和super关键字,关键字this的用法之一是用来指向当前对象或类实例的。,publicclassMyDateprivateintday,month,year;publicvoidtomorrow()this.day=this.day+1;,1.this关键字,第4章面向对象编程,4.7继承,4.7.3this和super关键字,1.this关键字,this关键字还有另一种含义。如果构造方法的第一个语句具有形式:,this(),那么这个构造方法将调用同一类中的由this后括号内参数指定的其它构造方法。,第4章面向对象编程,4.7继承,4.7.3this和super关键字,1.this关键字,例如有定义类如下:,classApublicA()System.out.println(被构造方法所调用);publicA(inta)this();System.out.println(a);,可以看到上类中构造方法被重载,并且在有参构造方法中使用this调用了本类中另一个无参构造方法。,第4章面向对象编程,4.7继承,4.7.3this和super关键字,1.this关键字,main()方法如下:,classTestpublicstaticvoidmain(Stringargs)Aa=newA(100);,运行结果如下:,被构造方法所调用100,第4章面向对象编程,4.7继承,4.7.3this和super关键字,2.super关键字,super.+方法名可以调用父类中的方法,super的另外一种是调用父类的构造方法,super关键字也有两个作用:,第4章面向对象编程,4.7继承,4.7.3this和super关键字,2.super关键字,【案例】利用super关键字调用父类,父类:,classApublicA()System.out.println(被构造方法所调用);,子类:,classBextendsApublicB()super();System.out.println(B构造方法);,第4章面向对象编程,4.7继承,4.7.3this和super关键字,2.super关键字,main()方法:,classTestpublicstaticvoidmain(Stringargs)Bb=newB();,第4章面向对象编程,4.7继承,4.7.3this和super关键字,2.super关键字,运行结果:,被构造方法所调用B构造方法,这个构造方法是通过专门的super语法来调用的。使用super的调用必须是子类构造器中的第一条语句。,第4章面向对象编程,4.7继承,4.7.4对象的构造,第4章面向对象编程,4.7继承,4.7.5多态性,编译时多态:在编译阶段,具体调用哪个被重载的方法,编译器会根据参数的不同来静态确定调用相应的方法。,运行时多态由于子类继承了父类所有的属性(私有的除外),所以子类对象可以作为父类对象使用。程序中凡是使用父类对象的地方,都可以用子类对象来代替。,第4章面向对象编程,4.7继承,4.7.6final关键字,final是一个应用很广泛的关键字。它可以修饰类、类的成员变量和成员方法,但其中作用各不相同。,1final修饰变量,final修饰变量,则成为常量,语法格式如下:,finaltypevariableName;,修饰成员变量时,定义时同时给出初始值;而修饰局部变量时不做要求。final修饰的变量一旦初始化后,以后将不能再修改。,第4章面向对象编程,4.7继承,4.7.6final关键字,1final修饰变量,例如:,classAAfinalintONE=11;voidchange(inti)ONE=i;,定义了一个常量,错误,不能改变one的值,第4章面向对象编程,4.7继承,4.7.6final关键字,2final修饰方法,final修饰方法,则该方法不能被子类重写,语法格式如下:,finalreturnTypemethodName(paramList),第4章面向对象编程,classAfianlvoidmeth()System.out.println(“ina”)classBextendsAvoidmeth()System.out.println(“inb”),定义了一个最终方法,错误,因为meth()方法是最终方法,4.7继承,4.7.6final关键字,2final修饰方法,例如:,第4章面向对象编程,4.7继承,4.7.6final关键字,3final修饰类,final修饰类,则类不能被继承,语法格式如下:,finalclassfinalClassName,第4章面向对象编程,finalclassAAfinalintONE=11;voidchange(inti)System.out.println(i=+i);classBBextendsAA/省落BB类的内容,定义了一个最终类,错误,因为AA是不能被继承,4.7继承,4.7.6final关键字,3final修饰类,例如:,第4章面向对象编程,4.8包,4.8.1包的含义和使用,包(package)是Java编程的重要概念。,包有利于将各种不同功能的类分类。,包避免了类名的冲突。,第4章面向对象编程,4.8包,4.8.1包的含义和使用,Java中用package语句来将一个Java源文件中的类打成一个包。package语句作为Java源文件的第一条语句,指明该文件中定义的类所在的包。(若缺省该语句,则指定为无名包)。它的格式为:packagepkg1.pkg2.pkg3;Java编译器把包对应于文件系统的目录管理。package语句中,用“.”来指明目录的层次。,第4章面向对象编程,4.8包,4.8.1包的含义和使用,“库”也由一系列类文件构成。每个文件都有一个组件。使用package关键字将所有这些组件(它们在各自独立的.java和.class文件里)都归纳到一起。在一个文件的开头使用下述代码:packagemypackage;,第4章面向对象编程,4.8包,4.8.1包的含义和使用,package语句必须作为文件的第一个非注释语句出现。package语句的作用是指出这个编译单元属于名为mypackage的一个库的一部分。如果其他人想使用这个名字,指出完整的名字。,第4章面向对象编程,4.8包,4.8.1包的含义和使用,使用打包语句时,创建的包名一定是独一无二。编译器强迫package名的第一部分是类创建者的因特网域名。将package名解析成自己机器上的一个目录注意根据Java包的约定,名字内的所有字母都应小写,甚至那些中间单词亦要如此。,第4章面向对象编程,4.8包,4.8.1包的含义和使用,例如,假定将文件名是MyClass.java的文件打包:,packagemypackage;publicclassMyClass,第4章面向对象编程,4.8包,4.8.1包的含义和使用,用import关键字导入一个完整的库时,就会获得“包”。例如:importjava.util.*;上述import语句的作用是导入完整的实用工具(Utility)库,该库属于标准Java开发工具包的一部分。若想导入单独一个类,可在import语句里指定那个类的名字。例如:importjava.util.Vector;,第4章面向对象编程,4.8包,4.8.1访问修饰符,类中的成员变量和成员方法都可以使用访问修饰符来控制其访问的权限。对类中成员访问属性的限定有四种类型:,第4章面向对象编程,4.9抽象类和接口,4.9.1抽象类,有时在库开发中,要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该行为。取而代之,在子类中实现该方法。知道其行为的其他类可以在类中实现这些方法。这样的类通常被称做抽象类(abstractclass)。通过用关键字abstract进行标记声明一个抽象类。,第4章面向对象编程,4.9抽象类和接口,4.9.1抽象类,抽象类的语法格式如下:,abstractclassabstractClass,抽象方法的语法格式如下:,abstractreturnTypeabstractMethod(paramlist);,定义Actor抽象类:,publicabstractclassActorintlife100;publicabstractvoidattact(Actora);publicvoiddefine(intdefineValue)/根据不同类型减少生命值的简单代码,第4章面向对象编程,4.9抽象类和接口,4.9.1抽象类,抽象类必须被继承,抽象方法必须被重写。抽象方法只需声明,无需实现;抽象类不能被实例化,抽象类不一定要包含抽象方法。若类中包含了抽象方法,则该类必须被定义为抽象类。不能有抽象构造方法或抽象静态方法。abstract类的子类为它们父类中的所有抽象方法提供实现,否则它们也是抽象类。,publicclassHeroextendsActorpublicvoidattact(Actora)/根据不同子类对象实现攻击方法,第4章面向对象编程,4.9抽象类和接口,4.9.2接口,接口是类似于类的一种结构。可以把接口看成是由常量和抽象方法组成的特殊类。(接口特别像纯粹的抽象类)接口是对C+的多重继承性的替代,即接口是用来实现类间多重继承功能的结构。Java语言规定:一个类只能继承一个父类。通过实现接口,某个类可以拥有多个父接口。,第4章面向对象编程,4.9抽象类和接口,4.9.2接口,接口的定义格式:,publicinterfaceinterfaceNameextendslistOfSuperInterface,接口体包括常量定义和方法定义。,第4章面向对象编程,4.9抽象类和接口,4.9.2接口,常量定义格式为:,typeNAME=value;,其自动具有public,final,static的属性,所以写成如下格式是一样的:,publicstaticfinaltypeNAME=value;,第4章面向对象编程,4.9抽象类和接口,4.9.2接口,方法定义格式为:,returnTypemethodName(paramlist);,其自动具有public和abstract属性,所以写成如下格式也是一样的:,publicabstractreturnTypemethodName(paramlist);,第4章面向对象编程,4.9抽象类和接口,4.9.2接口,定义接口的特点:,定义的方法没有方法体.它们本质上是抽象方法,每个实现接口的类必须实现所有的方法。接口中可以声明变量,它们是,publicfinal和static型。如果一个类实现了一个接口,但是不完全实现接口定义的方法,那么该类必须定义成abstract型。,第4章面向对象编程,4.9抽象类和接口,4.9.2接口,定义接口

温馨提示

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

最新文档

评论

0/150

提交评论