【面试干货】Java中的多态性

06-29 1105阅读

【面试干货】Java中的多态性

  • 1、方法重载(Overload)与多态性
  • 2、方法重写(Override)与多态性

    💖The Begin💖点点关注,收藏不迷路💖

    多态性(Polymorphism)是面向对象编程的三大基本特性之一,它允许我们以统一的方式处理不同的对象。多态性主要体现在方法的重写(Override)和方法的重载(Overload)上,但真正的多态性通常指的是方法的重写,并在运行时根据对象的实际类型来确定调用哪个方法。

    1、方法重载(Overload)与多态性

    方法重载允许在同一个类中定义多个同名但参数列表不同的方法。 然而,方法重载在编译时就已经确定了要调用的方法,因此它并不属于多态性的范畴。

    class Example {  
        void method(int a) {  
            System.out.println("带有整数参数的方法。");  
        }  
      
        void method(double a) {  
            System.out.println("带有双精度参数的方法。");  
        }  
    }
    

    2、方法重写(Override)与多态性

    方法重写是子类对父类已有方法的实现进行覆盖。 当子类对象调用该方法时,将执行子类中的方法,而不是父类中的方法。这就是多态性的体现,因为它允许我们使用父类类型的引用变量来引用子类对象,并调用子类中的方法。

    满足多态性的三个条件:

    1、有继承: 子类必须继承自父类。

    2、有重写: 子类必须重写父类中的某个方法。

    3、父类引用指向子类对象: 通过父类类型的引用变量来引用子类对象。

    示例代码:

    class Animal {
        void makeSound() {
            System.out.println("动物发出声音");
        }
    }
    class Dog extends Animal {
        @Override
        void makeSound() {
            System.out.println("狗在叫");
        }
    }
    class Cat extends Animal {
        @Override
        void makeSound() {
            System.out.println("猫在喵喵叫");
        }
    }
    public class PolymorphismDemo {
        public static void main(String[] args) {
            Animal myDog = new Dog(); // 父类引用指向子类对象
            myDog.makeSound(); // 输出 "狗在叫",展示了多态性
            Animal myCat = new Cat(); // 另一个父类引用指向另一个子类对象
            myCat.makeSound(); // 输出 "猫在喵喵叫",再次展示了多态性
        }
    }
    

    在上面的示例中,我们有一个Animal类,以及两个继承自Animal的子类Dog和Cat。

    Dog和Cat都重写了Animal中的makeSound()方法。在main方法中,我们创建了两个Animal类型的引用变量myDog和myCat,但实际上它们分别指向了一个Dog对象和一个Cat对象。

    当我们调用myDog.makeSound()和myCat.makeSound()时,由于多态性,它们会分别调用Dog类和Cat类中的makeSound()方法,而不是Animal类中的方法。这就是Java中多态性的体现。

    【面试干货】Java中的多态性

    💖The End💖点点关注,收藏不迷路💖
VPS购买请点击我

文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

目录[+]