欢迎来到天天文库
浏览记录
ID:37920414
大小:129.50 KB
页数:5页
时间:2019-06-02
《《Java程序设计》辅导资料6》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、大连理工大学网络教育学院Java程序设计辅导资料六主题:第三章Java的多态性和抽象性(课件)学习时间:2014年11月3日—11月9日内容:我们这周主要学习《Java程序设计》这门课程的第3章最后一部分关于Java多态性和抽象性方面的介绍以及依次相关内容。希望通过下面的内容能使同学们对面向对象程序设计语言的整体特性有进一步的了解。知识要点:1、多态的概念2、super的作用3、编译时多态和运行时多态4、类的抽象性5、抽象类6、最终类重点难点:1、super的作用2、编译时多态和运行时多态3、抽象类4、最终类一、类的多态性在程序设计语言中,多态性是指“一
2、种定义,多种实现”。例如,运算符“+”有多种含义,究竟执行哪种运算取决于参加运算的操作数个数及数据类型。多态性是面向对象的核心特征之一,主要有方法的多态和类型的多态。方法的多态包括方法的重载和覆盖,为一种功能提供多种实现;类型的多态表现为,子类是一种父类型。1、子类重定义从父类继承来的成员当子类从父类继承来的成员不能满足子类需要时,子类不能删除它们,但可以重新定义它们,扩充父类成员方法的功能,使父类成员能够适应子类新的需求。子类重新定义父类成员包括:重新定义父类的成员变量,则隐藏父类的成员变量;重定义父类的成员方法,如果参数列表相同则覆盖父类的成员方法,
3、否则重载。子类重定义父类成员表现出多态性,父类对象引用父类成员,子类对象引用子类成员。重定义的同名成员之间不会产生冲突和混乱,在子类的成员方法中,如果需要引用被子类隐藏或覆盖的父类同名成员,可使用super引用,语法格式如下:super.成员变量super.成员方法([参数列表])2、类型的多态子类通过继承方式扩充和发展了它的父类,继承约定了子类与父类之间存在的isA关系,子类是父类的一种特殊类型。第5页共5页大连理工大学网络教育学院isA关系与hasA关系不同,hasA关系表示一个对象使用另一个对象来存储自身的状态。子类对象即是父类对象子类对象包含了父
4、类的所有成员变量,isA关系表现为继承具有“即是”性质:子类对象即是父类对象。反之不然,父类对象不是它的子类对象。使用对象运算符instanceof可以判断一个对象是都属于指定类及其子类,例如:newPerson()instanceofPreson//结果是truenewStudent()instanceofPerson//结果是true,子类对象即父类对象newPerson()instanceofStudent//结果是false,父类对象不是子类对象父类对象引用子类实例子类对象即是父类对象,表现为父类与子类之间具有赋值相容性,即父类对象能够引用子类实
5、例,反之不行。例如:Personp=newStudent();//赋值相容,子类对象即是父类对象Strudents=newPerson();//语法错,赋值不相容,父类对象不是子类对象再扩展到Object类,由于所有类都是Object的子类,所以,一个Object对象能够引用任何类的实例。3、编译时多态和运行时多态根据何时确定执行多态方法中的哪一个,多态分为两种情况:编译时多态和运行时多态。如果在编译时能够确定执行多态方法中的哪一个,称为编译时多态;否则称为运行时多态。编译时多态方法重载都是编译时多态。根据实际参数的数据类型、个数和次序,Java编译时能
6、够确定重载方法中的哪一个。方法覆盖表现出两种多态性,当对象引用本类实例时,为编译时多态,否则为运行时多态。运行时多态以下声明父类对象p2引用子类实例:Personp2=newStudent(“张小莉”,newMyDate(1989,1,5));System.out.println(“p2:”+p2.toString());p2.toString()究竟执行谁的toString()方法?从编译角度看,p2声明为Person对象,而Person类声明了toString()方法,所以p2.toString()执行Person类的toString()方法,没有编
7、译错误。Java支持运行时多态,意为p2.toString()实际执行p2所引用实例的toString()方法。究竟是Person类或Student类的方法,运行时再决定。如果Student类声明toString()方法,则执行之;否则,执行Person类的toString()方法。4、多态的方法实现多态的toString()方法Object类的toString()方法声明如下,它返回由当前对象所属类名和十六进制的哈希码组成的描述对象信息的字符串:publicStringtoString()第5页共5页大连理工大学网络教育学院{ReturngetClas
8、s().getName()+"@"+Integer.toHexString(ha
此文档下载收益归作者所有