一、多态1、假设实现了一个动物的call方法。我们知道不同的动物有不同的叫声。在方法中传入一个参数类型时,比如猫狗叫声。在同一个方法中,当参数不同时,它们的执行结果是不同的,这就是多态性。2.多态性是当子类对象被赋值给父类引用,重写的方法被调用时,代表了子类的行为。3.如何实现多态实例//定义接口FruitinterfaceFruit{voidinfo();//定义抽象方法info()}//定义Cherry类实现Fruit接口classCherryimplementsFruit{doubleweight=66;//权重属性isweight//实现info()方法publicvoidinfo(){System.out.println("我是樱桃!"+"权重为:"+weight+"g");}}//定义Apple类为实现Fruit接口classAppleimplementsFruit{doubleweight=250;//weight属性为weight//实现info()方法publicvoidinfo(){System.out.println("我是苹果!"+"weight为:"+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我是樱桃!重量:66.0g我是苹果!重量:250.0g由以上代码定义了一个Fruit接口,定义了抽象方法info()。定义Cherry类和Apple类实现Fruit接口,定义可变权重属性并实现info()方法。“Fruitf1=newCherry(),Fruitf2=newApple()”实现子类对象赋值给父类引用,调用fruitInfo()方法。父类引用两个子类对象,分别传入f1和f2参数。二、对象类型转换1、子类对象可以自动转换为父类。2.父类转换为子类对象需要强制转换。例如://定义接口FruitinterfaceFruit{voidinfo();//定义抽象方法info()}//定义Cherry类实现Fruit接口classCherryimplementsFruit{doubleweight=66;//weight属性为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参数In}//定义静态方法fruitInfo(),接受一个Fruit参数fpublicstaticvoidfruitInfo(Fruitf){f.info();//调用info()方法f。pro()oftheincomingparameterf;//调用传入参数f的pro()方法}}运行结果为:从上面可以看出存在编译错误,fruitInfo()方法为校准导致传入Cherry对象。方法参数是Fruit类型,父类是Cherry的子类。程序编译出错。当程序运行到f.pro()这行代码时,发现并没有定义这个方法。因为传入了Cherry类,Cherry类中定义的pro()方法需要进行转换才能运行,即将Fruit类型变量转换为Cherry类型。修改后的代码如下://定义静态方法fruitInfo(),接受一个Fruit参数fpublicstaticvoidfruitInfo(Fruitf){Cherryf1=(Cherry)f;f1.info();//调用传入的info()方法parameterff1.pro();//调用参数f的pro()方法}再次运行的结果是:我是樱桃!重量:66.0g产地:浙江三、instanceof关键字1、instanceof关键字的作用是判断一个实例对象是否属于一个类。其语法如下:Objectinstanceofclass2.在进行引用类型转换之前使用instanceof关键字进行判断,例如:if(finstanceofCherry){//如果f引用Cherry对象类型,则返回true。Cherryf1=(Cherry)f;}4.小结本文主要介绍多态、对象类型转换、instanceof关键字。多态性是当一个子类对象被赋值给一个父类引用,当重写的方法被调用时,它代表了子类的行为。通过如何实现多态示例来帮助理解这种用法??。对象类型转换是指子类对象可以自动转换为父类对象,而将父类对象转换为子类对象则需要强制转换。instanceof关键字用于判断一个实例对象是否属于一个类。希望通过本文的学习对您有所帮助!
