java多态

什么是多态

多态是面向对象编程中的一个核心概念,允许基类的指针或引用指向派生类的对象,并调用相应的方法。

实现多态的条件

  1. 继承:必须存在继承;
  2. 重写:子类必须对父类中的方法进行重写;
  3. 向上转型:通过父类的引用调用子类的重写的方法;

方法重写是(Override):

子类可以重写父类的方法,要求方法名、参数列表和返回类型完全相同。重写方法不能降低访问权限。

•upcasting向上转型:将子类对象直接赋值给父类引用
•向上转型不需要强制类型转换
•向上转型后父类不能调用自己子类的方法
•父类引用或调用的是子类的方法
语法 
Animal cat = new Cat("多多",1);

优点:让代码实现更灵活简单;

缺点:不能调用子类特有的方法;

downcasting向下转型:将指向子类对象的父类引用赋值给子类引用
需要强制类型转换
•如果引用的是指向的子类对象,那么在向下转型的过程中是安全的。也就是编译是不会出错误的。

什么是方法重载

Java中方法的重载,就是在一个类中,有相同的方法名称,但形参不同的方法。方法名一定要相同 且 参数列表一定要不同

方法重写和方法重载的区别

重载是在同一个类中实现,重写是子类对父类实现

多态的优缺点

优点

能够降低代码的 "圈复杂度", 避免使用大量的 if - else;

可扩展能力更强如果要新增一种新的形状, 使用多态的方式代码改动成本也比较低;

缺点

属性没有多态性,当父类和子类都有同名属性的时候,通过父类引用,只能引用父类自己的成员属性;

构造方法没有多态性;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值