java多态的使用

本文介绍了Java中的多态性,通过继承和方法重写实现,增强了代码的灵活性和可扩展性。通过父类引用调用子类方法,即使方法名相同,输出结果各异。同时解释了编译和运行时的行为差异。
摘要由CSDN通过智能技术生成

多态的概述

        在Java中,多态性是通过继承和方法重写来实现的。当一个类继承自另一个类并重写了父类的方法时,可以通过父类的引用指向子类的对象,从而使得同一个方法调用可以产生不同的行为。

        多态的好处在于它增加了代码的灵活性和可扩展性。通过多态,我们可以编写更通用、可复用的代码,使得程序更易于维护和扩展。

多态的使用

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

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

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

public class Main {
    public static void main(String[] args) {
        Animal animal1 = new Dog();
        Animal animal2 = new Cat();

        animal1.makeSound();  // 输出:Dog barks
        animal2.makeSound();  // 输出:Cat meows
    }
}

多态调用成员方法口诀:编译看左边,运行看右边 

        在上述示例中,Animal是父类,DogCat是子类。通过父类类型的引用分别指向子类对象,并调用它们的makeSound()方法,实现了多态性。尽管是通过相同的方法调用,但由于子类重写了父类的方法,所以输出的结果不同。

 多态调用成员变量口诀:编译看左边,运行看左边

class Animal {
    String name = "Animal";
}

class Dog extends Animal {
    String name = "Dog";
}

public class Main {
    public static void main(String[] args) {
        Animal animal1 = new Animal();
        Animal animal2 = new Dog();

        System.out.println(animal1.name);  // 输出:Animal
        System.out.println(animal2.name);  // 输出:Animal
    }
}

        在上述示例中,Animal类和Dog类都有一个名为 name 的实例变量,但是它们的值分别为 "Animal""Dog"。当使用 Animal 类型的引用 animal1 调用 name 变量时,会输出 "Animal";当使用 Dog 类型的引用 animal2 调用 name 变量时,由于 Dog 类中定义了 name 变量,因此会输出 "Animal" 而不是 "Dog"

javac编译代码的时候,会看左边的父类中有没有这个变量,如果有,编译成功,如果没有编译失败。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值