父类引用指向子类对象

在 Java 中,父类引用可以指向子类对象,这是多态的一种表现。这种特性允许你使用父类的引用来操作子类对象,从而实现更灵活和可扩展的代码设计。

 

基本概念

多态:父类引用可以指向子类对象。这使得你可以用统一的接口处理不同的对象。

动态绑定:调用方法时,Java 会在运行时确定实际调用的是哪个类的方法(即子类的重写方法)。

示例代码

java

Copy Code

// 定义父类

class Animal {

    void makeSound() {

        System.out.println("Some sound");

    }

}

 

// 定义子类

class Dog extends Animal {

    @Override

    void makeSound() {

        System.out.println("Bark");

    }

}

 

// 使用父类引用指向子类对象

public class Main {

    public static void main(String[] args) {

        Animal myAnimal = new Dog(); // 父类引用指向子类对象

        myAnimal.makeSound(); // 调用子类的重写方法

    }

}

解释

声明父类引用:Animal myAnimal;

实例化子类对象并赋值给父类引用:myAnimal = new Dog();

调用方法:当调用 myAnimal.makeSound() 时,Java 会动态绑定到 Dog 类的 makeSound 方法,因为 myAnimal 实际上引用的是 Dog 对象。

优势

代码复用:可以编写通用的代码来处理不同的子类。

灵活性:可以在运行时改变对象的实际类型。

注意事项

向上转型:将子类对象赋给父类引用时,称为向上转型(upcasting)。这通常是安全的,因为子类对象包含父类的所有特性。

向下转型:如果需要使用子类特有的方法或属性,需要将父类引用向下转型(downcasting)。但必须确保实际对象确实是目标子类的实例,否则会抛出 ClassCastException。

java

Copy Code

Animal myAnimal = new Dog(); // 向上转型

Dog myDog = (Dog) myAnimal; // 向下转型,必须确保类型匹配

myDog.bark(); // 访问 Dog 特有的方法

总结来说,父类引用指向子类对象是面向对象编程中的一个核心概念,它允许你编写更灵活和可扩展的代码。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值