多态的详解

多态

  1. 所谓多态,就是指一个引用(类型)在不同的情况下的多种状态。也可以理解为,多态是指通过指向父类的指针,来调用在不同子类中实现的方法(用父类引用调用子类方法对象的方法)
    IDEA可以通过alt+insert可以快速重写
    同时需要注意静态方法无法重写

在Java中,多态(Polymorphism)是面向对象编程的一个重要概念,它允许使用一个父类类型的引用变量来引用子类类型的对象。多态性提供了代码的灵活性和可扩展性,使得可以在运行时根据实际对象的类型来调用适当的方法。

以下是Java多态的一些关键点和用法:

  1. 继承关系:多态性是建立在类之间的继承关系之上。子类继承父类的特性,包括字段和方法。

  2. 父类引用变量:可以使用父类类型的引用变量来引用子类的对象。这样做可以实现对象的多态性,即一个引用变量可以指向不同类型的对象。

  3. 动态绑定:Java中的方法调用是动态绑定的,也称为后期绑定。这意味着方法的调用是根据实际对象的类型来确定的,而不是引用变量的类型。

  4. 重写方法:子类可以重写父类的方法,即在子类中定义与父类相同名称和参数的方法。通过多态性,可以根据实际对象的类型来调用适当的重写方法。

  5. 编译时类型和运行时类型:多态性的一个重要概念是编译时类型和运行时类型。编译时类型是指引用变量的声明类型,而运行时类型是指引用变量所指向的实际对象的类型。

  6. instanceof操作符:可以使用instanceof操作符来检查对象的类型,以确定它是否是某个类或其子类的实例。

通过多态性,可以实现更灵活、可扩展和可维护的代码。通过使用父类引用变量来引用不同类型的子类对象,可以在不修改现有代码的情况下,轻松地添加新的子类,并根据实际对象的类型来调用适当的方法。

以下是一个简单的示例,展示了多态性的使用:

class Animal {
    public void sound() {
        System.out.println("Animal makes a sound");
    }
}

class Dog extends Animal {
    public void sound() {
        System.out.println("Dog barks");
    }
}

class Cat extends Animal {
    public void sound() {
        System.out.println("Cat meows");
    }
}

public class Main {
    public static void main(String[] args) {
        Animal animal1 = new Dog();
        Animal animal2 = new Cat(); // 父类引用能够接受子类引用反之则不行
        
        animal1.sound(); // 输出 "Dog barks"
        animal2.sound(); // 输出 "Cat meows"
    }
}

在上述示例中,Animal类是父类,DogCat类是其子类。通过将子类对象赋值给父类引用变量,实现了多态性。在运行时,根据实际对象的类型,调用了适当的重写方法。
同时需要注意静态方法无法重写。

需要注意的是,多态性只适用于方法调用,而不适用于类的静态成员和私有成员。此外,多态性不能应用于构造方法,因为构造方法是在创建对象时调用的,而在多态性应用之前。
多态的实例错误演示
对象时调用的,而在多态性应用之前。
[外链图片转存中…(img-11pG0tc4-1689148919621)]

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值