java多态的应用举例(java多态应用场景)

什么是多态?

多态指的是同一个方法或者同一个对象对于不同的调用者会有不同的解释和实现。它是面向对象编程中的一种非常重要的概念,使得程序更加灵活、可扩展、易于维护。

Java多态的实现方式?

Java支持两种多态的实现方式:静态多态和动态多态。其中,静态多态是指在编译时就确定了方法的调用方式,例如重载,而动态多态则是在运行时确定方法的调用方式,例如覆盖。在Java中,动态多态的实现方式主要是通过继承和接口实现的。

Java多态的应用举例

在Java中,多态的应用非常广泛,以下是一些常见的应用场景:

向上转型

向上转型是指将一个子类对象赋值给一个父类引用变量,这样子类对象就能够以父类的形式使用。这个特性非常有用,因为它可以使得代码更加通用化。例如:

    
//定义一个Animal类和Cat、Dog两个子类
public class Animal{
    public void sound(){
        System.out.println("动物发出声响");
    }
}

public class Cat extends Animal{
    public void sound(){
        System.out.println("猫发出喵喵声");
    }
}

public class Dog extends Animal{
    public void sound(){
        System.out.println("狗发出汪汪声");
    }
}

//测试代码
public class Test{
    public static void main(String[] args){
        Animal animal1 = new Cat(); 
        Animal animal2 = new Dog(); 
        animal1.sound(); //猫发出喵喵声
        animal2.sound(); //狗发出汪汪声        
    }
}
    

这里我们定义了一个Animal类和两个子类Cat和Dog,并且通过向上转型将子类对象赋值给父类引用变量,通过调用父类引用变量的方法,实现了对于子类的访问。

java多态的应用举例(java多态应用场景)

多态的重载与重写

多态的重载和重写是Java中多态的最基本应用方式。重载指的是在同一个类中,拥有两个或者更多方法,它们的方法名相同,参数不同,但是返回值可以不同。例如:

    
public class Overload{
    public int add(int x, int y){
        return x + y;
    }
    
    public int add(int x, int y, int z){
        return x + y + z;
    }
    
    public String add(String x, String y){
        return x + y;
    }
}
    

这里我们定义了一个类Overload,其中有三个不同的add方法,它们的参数和返回值都不同,通过重载实现了不同情况下的计算。

重写则是指在不同的类中,拥有两个或者更多方法,它们的方法名相同,参数和返回值也相同,但是实现方式不同。例如:

    
public class Student{
    public void study(){
        System.out.println("学生在学习");
    }
}

public class PrimarySchoolStudent extends Student{
    public void study(){
        System.out.println("小学生在学习");
    }
}

public class MiddleSchoolStudent extends Student{
    public void study(){
        System.out.println("初中生在学习");
    }
}

//测试代码
public class Test{
    public static void main(String[] args){
        Student s1 = new PrimarySchoolStudent();
        Student s2 = new MiddleSchoolStudent();
        s1.study(); //小学生在学习
        s2.study(); //初中生在学习       
    }
}
    

我们定义了一个Student类和两个子类PrimarySchoolStudent和MiddleSchoolStudent,并且都覆盖了父类的study方法,通过向上转型和动态多态性实现了不同类型学生的特殊实现。

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

郑重声明:

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

我们不承担任何技术及版权问题,且不对任何资源负法律责任。

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

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

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

猜你喜欢