java多态演讲课件_第1页
java多态演讲课件_第2页
java多态演讲课件_第3页
java多态演讲课件_第4页
java多态演讲课件_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

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

文档简介

Java

基础知识多态www.安博思软多态(Polymorphism)所谓多态,是指把类中具有相似功能的不同方法使用同一个方法名来实现,从而可以使用相同的方式来调用这些具有不同功能的同名方法。简单来说就是多态是具有表现多种形态的能力的特征。www.安博思软彩色打印机打印机黑白打印机打印效果:彩色打印效果:黑白打印打印Java中的引用变量有两个类型,一个是编译时的类型,一个是运行时的类型,编译时的类型由声明该变量时使用的类型决定,运行时的类型由实际赋给该变量的对象决定。如果编译时的类型与运行时的类型不一致就会出现所谓的多态。(Polymorphism)www.为什么会出现多态?安博思软www.编译时多态性(静态绑定)

对于多个同名方法,如果在编译时能够确定执行同名方法中的哪一个,则称为编译时多态性。运行时多态性(动态绑定)如果在编译时不能确定,只能在运行时才能确定执行多个同名方法中的哪一个,则称为运行时多态性。多态性有两种:www.classTest

{

voidprint()

{

System.out.println(“hello”);

}

voidprint(Stringx)

{

System.out.println(“hello”+x);

}

publicstaticvoidmain(String[]args)

{

Testts=newTest();

ts.print();

ts.print(“jack”);

}

}

classTest

{

voidprint()

{

System.out.println("helloTest");

}

www.

classAextendsTest

{

voidprint()

{

System.out.println("helloA");

}

publicstaticvoidmain(String[]args)

{

Testa=newA();

a.print();

}

}

静态绑定动态绑定

可以看到一个类中成员方法的重载,也就是一个静态绑定,系统会在你编译的时候根据你调用的方法参数列表来动态的决定调用哪一个函数

可以看到子类覆写了父类的方法,也就是一个动态绑定,系统会在运行时动态的决定调用子类覆写后方法来实现1:继承

2:重写(重写父类继承的方法)

3:父类引用指向字类对象www.多态:实现多态三个条件:安博思软www.JAVA中,一个类之能有一个父类,不能多继承。一个父类可以有多个子类,而在子类里可以重写父类的方法,这样每个子类里重写的代码不一样,自然表现形式就不一样。这样用父类的变量去引用不同的子类,在调用这个相同的方法的时候得到的结果和表现形式就不一样了,这就是多态,相同的消息(也就是调用相同的方法)会有不同的结果多态的实现:通过继承实现www.//子类2

publicclassSon2extendsFather{//重写父类打孩子方法

publicvoidhitChild(){System.out.println("我知道错了,别打了!");

}}//子类3publicclassSon3extendsFather{//重写父类打孩子方法publicvoidhitChild(){System.out.println("我跑,你打不着!");}}//子类1publicclassSon1extendsFather{//重写父类打孩子方法publicvoidhitChild(){System.out.println("我知道错了,别打了!");}}//父类publicclassFather{//父类有一个打孩子方法

publicvoidhitChild(){}System.out.println(“我是父亲,可以打儿子!");}//测试类

publicclassTest{

publicstaticvoidmain(Stringargs〔〕){ Fatherfather; father=newSon1(); father.hitChild(); father=newSon2(); father.hitChild(); father=newSon3(); father.hitChild();}}输出结果:我知道错了,别打了!为什么打我?我做错什么了!我跑,你打不着!都调用了相同的方法,出现了不同的结果!这就是多态的表现!

www.继承单继承一个类只能继承一个父类!接口多实现一个类可以同时实现多个接口!一个接口类型变量也可以指向其实现类的实例,这也是多态的一种表现。多态的实现:通过接口实现www.//类2publicclassdaughter2implementsPetInterFace{//实现接口方法publicvoidpet(){

System.out.println(“父亲宠爱我!");}}

//测试类publicstaticvoidmain(String[]args){

PetInterFacedg1=newdaughter1();dg1.Pet();

PetInterFacedg2=newdaughter2();dg2.Pet();

}

}//类1publicclassdaughter1implementsPetInterFace{//实现接口方法publicvoidpet(){System.out.println(“父亲溺爱我!");}}//新接口publicinterfacePetInterFace{

//新功能方法publicvoidpet();}输出结果:父亲溺爱我!

父亲宠爱我!1).应用程序不必为每一个派生类(子类

温馨提示

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

评论

0/150

提交评论