深入面向对象的程序设计.ppt
《深入面向对象的程序设计.ppt》由会员分享,可在线阅读,更多相关《深入面向对象的程序设计.ppt(59页珍藏版)》请在三一办公上搜索。
1、第六章深入面向对象的程序设计,6.1 继承与重载6.1.1 继承关系的定义Java中的继承是通过extends关键字来实现的。新定义的类称为子类,它可以从父类那里继承所有的非private的属性和方法作为自己的成员。见例类Employee、CommonEmployee、ManagerEmployee,6.1.2 属性的继承与隐藏,1.属性的继承子类可以继承父类非私有的所有属性。子类可以自己新建一个属于自己的属性。子类的全部属性父类继承下来的自己新建的。说明:父类的所有非私有属性实际是各子类都拥有的属性的集合。子类从父类继承属性不需要把父类属性的定义部分再复制一遍。优点:减少程序的维护量。,2.
2、属性的隐藏,子类从父类继承来的属性变量重新加以定义,称为属性的隐藏。见例6.1TestHide.java,6.1.3 方法的继承、重载和覆盖,1.方法的继承父类的非私有方法作为类的非私有成员,也可以被子类所继承。见例6.2 InheritMethod.java,2.方法的覆盖,在子类中定义与父类相同的方法名称,称为方法的覆盖。见例6.3OverrideMethod.java注:在方法的覆盖中,由于同名方法隶属于不同的类,所以要解决调用如何区分他们的问题,只需要在方法名前面使用不同的类名或不同类的对象名即可。子类在重新定义父类已有的方法时,应保持与父类完全相同的方法头声明,即应与父类有完全相同的
3、方法名、返回值和参数列表。,3.方法的重载,子类定义同名方法来覆盖父类的方法是面向对象方法中多态技术的一种实现。所谓多态是指同名的不同方法共存。有助于隐藏对象内部的细节,提高程序的抽象程度,是面向对象程序设计中经常使用的方法。实现多态技术的另一种重要的手段就是方法的重载。重载:类对自身已有的同名方法的重新定义。重载与覆盖不同,重载不是子类对父类同名方法的重新定义。,方法的重载是同类中同名方法共存的情况,不能像方法的覆盖那样采用类名前缀来区分,而应该采用通过参数列表来区分不同的方法。同类中同名的不同方法需要有不同的参数列表,包括参数顺序的不同和参数类型的不同。,6.1.4 父类对象与子类对象的使
4、用与转化,super 和this是常用来指代父类对象和子类对象的关键字。Java系统默认,每个类都缺省地具有null、this和super三个量,所以在任意类中都可以不加说明而直接使用它们。null代表“空”,代表一个什么也没有的“空”值,一般用null来代表尚未存在的对象,在定义一个对象但尚未为其开辟内存单元时可以指定这个对象为null。,1.this,this表示的是当前对象本身,更准确地说,this代表了当前对象的一个引用。对象的引用可以理解为对象的另一个名字,通过引用可以顺利地访问到对象,包括修改对象的属性、调用对象的方法。,this通常用来把当前对象的引用作为参数传递给其他的对象或方
5、法。如:class SecretaryEmployee extends CommonEmployee/一般雇员的子类:秘书类 SecretaryEmployee(ManagerEmployee boss)/秘书的构造函数 m_EmpSalary=boss.getSalary()/3;/秘书的薪金是上司的三分之一,/雇员的子类2:主管class ManagerEmployee extends EmployeeSecretaryEmployee m_Secretary;/主管的秘书ManagerEmployee(Date mgrdate)/主管的构造函数m_Secretary=new Secret
6、aryEmployee(this);/每新任命一位主管,都为他指派一名秘书 说明:每新建一个ManagerEmployee对象时,都同时创建一个SecretaryEmployee对象作为其秘书。,2.super,super表示的是当前对象的直接父类对象,是当前对象的直接父类对象的引用。所谓直接父类是相对于当前对象的其他“祖先”类而言。,注意:this和super是属于类的所有特指的属性(即类的成员),只能用来代表当前对象和当前对象的父对象,而不能像其他类的属性一样随意引用。下列都是错误的代码:ManagerEmployee MgrEmp=new ManagerEmployee();();/Er
7、ror();/Error,3.父类对象与子类对象的转换,父类对象和子类对象的转化需要注意如下的原则:子类对象可以被视为是其父类的一个对象;父类对象不能被当作是其某一个子类的对象;如果一个方法的形式参数定义的是父类对象,那么调用这个方法时,可以使用子类对象作为实际参数;如果父类对象引用指向的实际是一个子类对象,那么这个父类对象的引用可以用强制类型转换成子类对象的引用。,例:class superClass/定义父类 int x;.class SubClass extends SuperClass/定义子类 int y;char ch;.,public class UseSuperSub/使用父类
8、与子类 SuperClass sc,sc_ref;SubClass sb,sb_ref;sc=new SuperClass();sb=new SubClass();sc_ref=sb;/父类引用可以指向子类对象 sb_ref=(SubClass)sc_ref;/父类引用转换成子类引用,6.1.5 构造函数的继承与重载,构造函数是类的一种特殊函数,它也可以从父类那里继承,也可以互相重载。1.构造函数的重载构造函数的重载是指同一个类中存在着若干个具有不同参数列表的构造函数。当一个类因构造函数的重载而存在着若干个构造函数时,创建该类对象的语句会自动根据给出的实际参数的数目、类型和顺序来确定调用哪个构
9、造函数来完成新对象的初始化工作。,当一个构造函数需要调用另一个构造函数时,应使用关键字this,同时这个调用语句应该是整个构造函数的第一个可执行语句。如:Employee()m_EmpNo=m_NextEmpNo+;Employee(String name)this();m_EmpName=new String(name);,2.构造函数的继承,子类可以继承父类的构造函数,遵循以下的原则:1,子类无条件地继承父类的不含参数的构造函数;2,如果子类自己定义了构造函数,则它在创建新对象时,它将先执行继承自父类的无参数构造函数,然后再执行自己的构造函数;3,对于父类的含参数构造函数,子类可以通过在自
10、己构造函数中使用super关键字来调用它,但这个调用语句必须是子类构造函数的第一个可执行语句。,在父类已有构造函数的基础上,子类的构造函数可以有如下的几种设计方法:1,不专门定义自己的构造函数,每当创建对象时,系统自动调用父类的无参数构造函数2,定义自己的构造函数并调用父类的含参数构造函数,在父类构造函数的初始化操作的基础上定义子类自己的初始化操作。3,实现构造函数的重载,满足多层次的对象初始化需要,6.2 包(package),包:1,把各种类组织在一起,使得程序功能清楚、结构分明。2,包是一种松散的类的集合。同一包中的类之间可以是任意的关系,在缺省情况下可以互相访问。3,使用包有利于实现不
11、同程序间类的复用。,1.创建包,缺省:系统为每一个.java源文件创建一个无名包。(1)该.java文件中定义的所有类都隶属于这个无名包,它们之间可以相互引用。(2)无名包不能被其他包所引用,即无名包中的类不能被其他包中的类所利用和复用。,创建包的语句需要用关键字package,而且是整个.java文件的第一个语句。格式:package 包名;package pkg1.pkg2.pkg3;例:package EmpClasses;package EmpSystem.EmpClasses;/创建两个子文件夹注:实际上,创建包就是在当前文件夹下创建一个子文件夹,以便存放这个包中包含的所有类的.cl
12、ass文件。命令行创建包:Javac d.*.java,2.包的引用,将类组织成包的目的是为了更好地利用包中的类。引用不在同一个包中的其它(非)public类,可以使用下面几种方法:(1)使用包名、类名前缀对于同一个包中的其他类,只需在要使用的属性或方法名前加上类名作为前缀即可;对于其他包中的类,则需要在类名前缀的前面加上包名前缀。,(2)加载需要使用的类,在程序的开始部分利用import语句将需要使用的整个类加载到当前程序中,这样在程序中需要引用这个类的地方就不需要再使用包名作为前缀即可。可以直接利用import语句引入整个包。Import java.awt.*;,(4)CLASSPATH,
13、环境变量CLASSPATH类似于DOS操作系统中的PATH,它指明了所有缺省的类字节码文件路径。当一个程序找不到它所需使用的其他类的.class文件时,系统会自动到CLASSPATH环境变量所指明的路径中去寻找。,6.3 接口,接口在有些资料上被称为界面,英文名称为interface。接口与包相似,也是用来组织应用中的各类并调节它们的相互关系的一种结构。接口是用来实现类间多重继承功能的结构。,6.3.1 接口的基本概念,Java中的接口定义了若干的抽象方法和常量,形成一个属性集合,该属性集合通常代表了某一组功能的实现,其主要作用是可以帮助我们实现类似于类的多重继承的功能。多重继承是指一个子类可
14、以有一个以上的直接父类,该子类可以继承它所有直接父类的成员。,说明:Java中的接口中的属性都是常量,接口中的方法都是没有方法体的抽象方法。接口定义的仅仅是实现某一特定功能的一组功能的对外接口和规范。接口并没有真正地实现这个功能,这个功能的真正实现是在“继承”了这个接口的各个类中完成的,由这些类来具体定义接口中各抽象方法的方法体。因此,在Java中,通常把对接口功能的“继承”称为“实现”。,6.3.2 接口的声明,Java中声明接口的语法如下:public interface 接口名 extends 父接口名列表/接口体/常量域声明publicstaticfinal域类型 域名常量值;/抽象方
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 深入 面向 对象 程序设计
链接地址:https://www.31ppt.com/p-6310912.html