java多态的三种形式例子是什么(java多态实现的三种形式)-捕鱼10元起上10元下

向上转型

java中的多态通过向上转型实现,也叫作向上造型。向上转型是指子类对象可以自动转化为父类对象。在向上转型的场景中,新建一个子类对象,并将其赋值给父类的引用类型变量,变量类型为父类类型。

如下面的例子中:

class animal{
    public void eat(){
        system.out.println("动物会吃");
    }
}
class cat extends animal{
    public void eat(){
        system.out.println("猫吃鱼");
    }
    public void catchmouse(){
        system.out.println("猫捉老鼠");
    }
}
public class polymorphicdemo{
    public static void main(string[] args){
        animal animal=new cat();
        //向上转型:animal类型为animal但是指向的对象却是cat
        animal.eat();//调用的哪个eat方法?//子类的eat方法
        //animal.catchmouse();//无法调用子类特有的方法
    }
}

可以看到,这个时候虽然实质上是cat类型的对象,但在编译期是animal类型的引用,因此只能调用animal中存在的方法和属性,无法调用子类中独有的属性和方法。

java多态的三种形式例子是什么(java多态实现的三种形式)

向下转型

向下转型即将父类的引用类型变量强制转化为子类类型。如果要向下转型必须保证向下转型的引用变量本质是一个指向子类实例的引用变量,否则转型操作允许,但引用变量指向的是null引用,而调用这个变量下的方法或属性会引发nullpointerexception。

如下例代码:

class animal{
    public void eat(){
        system.out.println("动物会吃");
    }
}
class cat extends animal{
    public void eat(){
        system.out.println("猫吃鱼");
    }
    public void catchmouse(){
        system.out.println("猫捉老鼠");
    }
}
public class polymorphicdemo{
    public static void main(string[] args){
        animal animal=new animal();
        if(animal instanceof cat){
            cat cat=(cat)animal;//此处animal引用变量指向的是animal实例,因此向下转型会失败。
            cat.catchmouse();
        }
    }
}

在这个例子中,由于animal指向的是animal实例,因此向下转型失败,如果试图调用cat.catchmouse方法,编译无法通过。

函数重载

java中的方法重载是指在同一个类中,存在两个或多个方法名称相同,但是参数不同的方法,这些方法被称之为重载方法。

实现函数重载的过程中,编译器会根据调用方法时候的传递参数的不同来确定方法的调用版本。如下例代码:

public class polymorphicdemo{
    public int add(int x,int y){//方法1
        return x y;
    }
    public int add(int x,int y,int z){//方法2
        return x y z;
    }
    public static void main(string[] args){
        polymorphicdemo pd=new polymorphicdemo();
        int a=pd.add(2,3);
        int b=pd.add(2,3,4);
    }
}

在这个例子中,存在两个名称相同的add方法,但是因为参数不同,可以根据调用方法传递参数的不同确定调用哪个方法。在传递2个参数的时候调用第一个add方法,在传递3个参数的时候调用第二个add方法。这也是java中的函数重载多态实现的方式之一。

本文来自投稿,不代表亲测学习网立场,如若转载,请注明出处:https://www.qince.net/javapeixun6t-3.html

郑重声明:

本站所有内容均由互联网收集整理、网友上传,并且以计算机技术研究交流为目的,仅供大家参考、学习,不存在任何商业目的与商业用途。 若您需要商业运营或用于其他商业活动,请您购买正版授权并合法使用。

我们不承担任何技术及捕鱼10元起上10元下的版权问题,且不对任何资源负法律责任。

如遇到资源无法下载,请点击这里失效报错。失效报错提交后记得查看你的留言信息,24小时之内反馈信息。

如有侵犯您的捕鱼10元起上10元下的版权,请给我们私信,我们会尽快处理,并诚恳的向你道歉!

(0)
上一篇 2023年4月25日 上午6:47
下一篇 2023年4月25日 上午6:47

猜你喜欢

网站地图