一、多态
1.假定完成一个动物发出的叫声办法,咱们知道不同的动物,它们的叫声是不一样的。当在办法中传入一个参数类型,例如猫的叫声、狗的叫声。在同一个办法,当参数不同它们的履行结果各不相同,这便是多态。
2.多态是把子类目标赋给父类引证时,调用重写的办法时,表明的是子类的行为。
3.怎样完成多态例子
//界说接口FruitinterfaceFruit{voidinfo();//界说抽象办法info()}//界说Cherry类完成Fruit接口classCherryimplementsFruit{doubleweight=66;//weight特点为分量//完成info()办法publicvoidinfo(){System.out.println(“我是一个樱桃!”+”分量为:”+weight+”g”);}}//界说Apple类完成Fruit接口classAppleimplementsFruit{doubleweight=250;//weight特点为分量//完成info()办法publicvoidinfo(){System.out.println(“我是一个苹果!”+”分量为:”+weight+”g”);}}publicclassp30{publicstaticvoidmain(String[]args){//TODOAuto-generatedmethodstubFruitf1=newCherry();//创立Cherry目标,Fruit类型变量f1引证Fruitf2=newApple();//创立Apple目标,Fruit类型变量f2引证fruitInfo(f1);//调用fruitInfo()办法,把f1参数传入fruitInfo(f2);//调用fruitInfo()办法,把f2参数传入}//界说静态的fruitInfo()办法,承受一个Fruit的参数fpublicstaticvoidfruitInfo(Fruitf){f.info();}}
运行的结果是:
我是一个樱桃!分量为:66.0g我是一个苹果!分量为:250.0g
从上面代码中,界说了一个Fruit接口,界说了抽象办法info()。界说Cherry类和Apple类完成Fruit接口,界说变量weight特点和完成info()办法。“Fruitf1=newCherry()、Fruitf2=newApple()”完成子类目标赋给父类引证,调用fruitInfo()办法,父类引证了两个子类目标别离传入f1和f2参数。
二、目标类型转化
1.子类目标是能够主动转化成父类。
2.父类转化成子类目标就需要强制转化。
例如:
//界说接口FruitinterfaceFruit{voidinfo();//界说抽象办法info()}//界说Cherry类完成Fruit接口classCherryimplementsFruit{doubleweight=66;//weight特点为分量//完成info()办法publicvoidinfo(){System.out.println(“我是一个樱桃!”+”分量为:”+weight+”g”);}//界说pro()办法voidpro(){System.out.println(“产地:浙江”);}}publicclassp31{publicstaticvoidmain(String[]args){//TODOAuto-generatedmethodstubFruitf1=newCherry();//创立Cherry类的实例目标fruitInfo(f1);//调用fruitInfo()办法,把f1参数传入}//界说静态办法fruitInfo(),承受一个Fruit参数fpublicstaticvoidfruitInfo(Fruitf){f.info();//调用传入参数f的info()办法f.pro();//调用传入参数f的pro()办法}}
运行的结果是:
从上面能够看出编译出错了,调用fruitInfo()办法传入Cherry目标,办法参数是Fruit类型的,把Cherry的子类当作父类运用导致程序编译呈现过错,程序在运行到f.pro()这行代码发现这个办法没有界说。因为传入的是Cherry类,在Cherry类中界说了pro()办法需要强制转化才能够运行,便是把Fruit类型变量强制转化成Cherry类型。
修改后代码如下所示:
//界说静态办法fruitInfo(),承受一个Fruit参数fpublicstaticvoidfruitInfo(Fruitf){Cherryf1=(Cherry)f;f1.info();//调用传入参数f的info()办法f1.pro();//调用传入参数f的pro()办法}
再次运行的结果是:
我是一个樱桃!分量为:66.0g产地:浙江
三、instanceof关键字
1.instanceof关键字作用
判别一个实例目标是否归于一个类,它的语法如下:
目标instanceof类
2.在进行引证类型转化前先运用instanceof关键字判别,例如:
if(finstanceofCherry){//如果f指的是Cherry目标类型时,返回的是true。Cherryf1=(Cherry)f;}
四、总结
本文首要介绍了多态、目标类型转化、instanceof关键字。
多态是子类目标赋给父类引证时,调用重写的办法时,表明的是子类的行为。通过怎样完成多态例子协助了解这个用法。
目标类型转化是子类目标是能够主动转化成父类、父类转化成子类目标就需要强制转化。
instanceof关键字用来判别一个实例目标是否归于一个类,期望大家通过本文的学习,对你有所协助!
评论前必须登录!
注册