Java基础复习---面向对象三大特性之一---多态

这篇博客探讨了Java中的多态性概念,强调了其依赖于继承和方法重写。通过实例展示了如何创建父类引用指向子类对象,并解释了编译时和运行时的行为差异。内容包括Car、BMW和TSL三个类的继承关系,以及它们各自对run和fix方法的重写。在多态对象的使用中,展示了如何调用子类的方法并访问成员变量。
摘要由CSDN通过智能技术生成

学习多态要知道几点

1.多态的前提:继承+重写。father f = new son();

2.口诀:

(1)父类引用指向子类对象:创建出来的子类对象的地址值交给父类类型的引用变量来保存;

(2)编译看左边,运行看右边:必须要在父类中定义这个方法才能通过编译,因为多态对象认为自己是父类类型;必须要在子类中重写父类提供的方法,才能满足多态,因为实际干活的是子类。

package cn.tedu;
/**本类用于复习多态*/
public class ReviewPolymorphism {
    public static void main(String[] args) {
        /**
         * 多态的前提:继承+重写
         */
        //创建父类对象
        Car car = new Car();
        System.out.println(car.price);
        car.run();
        //创建子类对象
        BMW bmw = new BMW();
        bmw.fix();
        //创建多态对象
        Car c = new TSL();
        c.run();//特斯拉运行
        System.out.println(c.color);//null
        //结果为null:因为多态对象把自己当作父类类型
    }
}

class Car{
    String color;
    double price;
    public void run(){
        System.out.println("汽车运行");
    }
    public void fix(){
        System.out.println("汽车修理");
    }
}
class BMW extends Car{
    String color = "black";
    double price = 100;

    @Override
    public void run() {
        System.out.println("宝马运行");
    }

    @Override
    public void fix() {
        System.out.println("宝马修理");
    }
}
class TSL extends Car{
    String color = "red";
    double price = 200;
    @Override
    public void run() {
        System.out.println("特斯拉运行");
    }

    @Override
    public void fix() {
        System.out.println("特斯拉修理");
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

啊渊啊渊.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值