什么是多态?

烂大街的一句话是:多态是Java面向对象三大特征(封装、继承、多态)之一。

多态其实很好理解。

比如回家,今天下班你要回家,回家你可以有好几种方式选择,步行(太累了,夏天还会满头大汗),坐公交车(虽然很拥挤,但是很实惠呀),打车(家里肯定有机子在挖矿),自驾(没啥说的,自己的车一个字"自由")。

在这里,回家就是一个类(BackHome),并且是一个父类。步行、坐公交车、打车、自驾都是子类。想要回家,我只需要继承“回家”这这个父类,然后就可以有很多种回家的方法了,这便是多态。

可以看出,多态是方法的多态,和属性无关。想要实现多态必须有继承、重写(重载)、向上转型。

package testjava;

/**
 * @Description:多态
 * @author:豆腐兄
 * @date:2022/6/7 17:26
 */
public class BackHome {
    /**
     * 父类的方法
     */
    public void home() {
        System.out.println("回家");
    }
}

/**
 * 子类Walk继承父类BackHome
 * 步行回家
 */
class WalkBackHome extends BackHome {
    /**
     * 重写home()方法;
     */
    @Override
    public void home() {
        System.out.println("步行回家");
    }

}

/**
 * 子类TakeBus继承父类BackHome
 * 坐公交车回家
 */

class TakeBusBackHome extends BackHome {
    /**
     * 重写home()方法;
     */
    @Override
    public void home() {
        System.out.println("坐公交车回家");
    }
}

/**
 * 子类TaxiBackHome继承父类BackHome
 * 打车回家
 */
class TaxiBackHome extends BackHome {
    /**
     * 重写home()方法;
     */
    @Override
    public void home() {
        System.out.println("打车回家");
    }
}

/**
 * 子类TaxiBackHome继承父类BackHome
 * 打车回家
 */
class ByCarBackHome extends BackHome {
    /**
     * 重写home()方法;
     */
    @Override
    public void home() {
        System.out.println("自驾回家");
    }
}

class Test {
    public static void main(String[] args) {
        /**
         * 多态方法,编译看左边,运行看右边
         * 向上转型(父类引用指向子类对象)
         */
        BackHome backHome1 = new WalkBackHome();
        backHome1.home();

        BackHome backHome2 = new TakeBusBackHome();
        backHome2.home();

        BackHome backHome3 = new ByCarBackHome();
        backHome3.home();

        BackHome backHome4 = new TaxiBackHome();
        backHome4.home();
    }
}

运行后结果如下:

 

可以看出,同样是回家也就是home()这个方法,在子类继承后,通过重写,就有不同的回家的方式,这就是多态。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值