如何实现Java多态?

如何实现Java多态?

允许不同类的对象同一消息作出不同的响应
同一个行为具有多个不同表现形式的能力
实现方式:

  • 编译时多态(静态多态):主要通过方法重载(Overloading)来实现。
    • 方法重载是指在同一个类中,定义多个同名但参数列表不同的方法。
    • 在编译时,根据参数的不同,编译器会确定调用哪个具体的方法。
package JavaConcept;  
  
class Calculator {  
    // 接受不同类型或数量的参数  
    // 重载的加法方法,接受两个整数参数  
    public int add(int num1, int num2) {  
        return num1 + num2;  
    }  
  
    // 重载的加法方法,接受两个浮点数参数  
    public double add(double num1, double num2) {  
        return num1 + num2;  
    }  
  
    // 重载的加法方法,接受三个整数参数  
    public int add(int num1, int num2, int num3) {  
        return num1 + num2 + num3;  
    }  
}  
  
public class OverloadingExample {  
    public static void main(String[] args) {  
        Calculator calculator = new Calculator();  
        // 根据传入的参数不同,会调用相应的add方法,从而实现了多态的效果  
        int result1 = calculator.add(5, 10);  
        System.out.println("Result 1: " + result1);  
  
        double result2 = calculator.add(5.5, 10.5);  
        System.out.println("Result 2: " + result2);  
  
        int result3 = calculator.add(5, 10, 15);  
        System.out.println("Result 3: " + result3);  
    }  
}
  • 运行时多态(动态多态):主要通过方法重写(Overriding)来实现。
    • 方法重写是指子类重新定义父类中已有的方法
    • 当通过子类对象调用该方法时,实际执行的是子类中重写后的方法,而不是父类中的方法。
    • 这就实现了在运行时根据对象的实际类型来决定调用哪个方法的多态行为。
package JavaConcept;  
// 运行时多态:通过重写实现  
public class Animal1 {  
    public  void makeSoud(){  
        System.out.println("动物发出声音");  
    }  
}  
// 子类重写父类的方法  
//Dog和Cat类都继承自Animal类,并重写了makeSound方法  
class Dog extends Animal1{  
    @Override  
    public void makeSoud() {  
        System.out.println("狗叫");  
    }  
}  
class Cat extends Animal1{  
    @Override  
    public void makeSoud() {  
        System.out.println("猫叫");  
    }  
}

package JavaConcept;  
  
public class PolymorphismExample {  
    public static void main(String[] args) {  
        // 创建了Dog和Cat对象,并将它们向上转型为Animal类型  
        Animal1 animal1 = new Dog();  
        Animal1 animal2 = new Cat();  
        // 调用Animal1类型的makeSoud()方法  
        // 这个方法在Dog和Cat类中都有重写,所以会调用Dog或Cat类中的makeSoud()方法  
        // 实际执行的是子类中重写后的方法,多态  
        animal1.makeSoud();  
        animal2.makeSoud();  
    }  
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值