Java——多态定义及论述(含解释例子)

 

定义

多态(Polymorphism)是面向对象编程的三大特性之一,它表示同一个操作作用于不同的对象上,可以产生不同的执行结果。简单来说,多态允许我们使用父类类型的引用来操作子类对象,并在运行时根据对象的实际类型来执行相应的方法。

论述

  1. 方法的重载(Overloading)与重写(Overriding)

    • 重载:在同一个类中,可以有多个同名但参数列表不同的方法。这是编译时的多态。
    • 重写:在子类中定义一个与父类中同名、同参数列表的方法,从而覆盖父类中的方法。这是运行时的多态。
  2. 向上转型和向下转型

    • 向上转型:将子类对象赋给父类类型的引用。例如,Animal a = new Dog(); 这里DogAnimal的子类。
    • 向下转型:将父类类型的引用转换为子类类型的引用。这通常需要显式转换,并可能引发ClassCastException
  3. 接口与多态

    • 通过接口,我们可以实现更高级别的多态。一个类可以实现多个接口,并使用接口类型的引用来引用这些类的对象。
    • 当一个接口被多个类实现时,这些类的对象都可以被赋给该接口类型的引用,从而表现出多态性。
  4. 运行时多态的实现

    • 在Java中,运行时多态主要通过方法表的动态分派来实现。当通过父类类型的引用调用方法时,Java虚拟机会在运行时根据对象的实际类型查找并执行相应的方法。
  5. 多态的优势

    • 多态提高了代码的灵活性和可扩展性。通过多态,我们可以编写更加通用的代码,而无需关心具体的对象类型。
    • 多态也支持开放封闭原则,即在不修改现有代码的情况下扩展系统的功能。

例: 

//测试
public class Domo_02 {
    public static void  main(String[] args){
        //对象类型转换
        Animal an1 = new Cat();
        Animal an2 = new Dog();
        an1.shout();
        an2.shout();
    }
}
//定义抽象类
abstract class Animal{
    abstract void shout();//定义shout方法
}
//定义类并继承抽象类
class Cat extends Animal{
    //重写shout方法
    public void shout(){
        System.out.println("喵喵......");
    }
}
//定义类并继承抽象类
class Dog extends Animal{
    //重写shout方法
    public void shout(){
        System.out.println("汪汪......");
    }
}

  • 6
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值