多态概述

多态的前提与体现

  1. 有继承关系。继承让类与类产生了关系,是多态的前提。
  2. 要有方法重写。多态就是靠方法的重写来体现不同的状态的,如果没有重写也是可以的,但是这样的多态就没有意义,没有表现出多种状态。
  3. 要有父类引用指向子类对象。

            父 f = new ();

 

多态中的成员访问特点:

  1. 成员变量

编译看左边,运行看左边。

  1. 构造方法

创建子类对象的时候,访问父类的构造方法,对父类的数据进行初始化。

  1. 成员方法

编译看左边,运行看右边。

即多态中,不存在成员变量的重写,用的始终是父类的成员变量,但是成员方法存在重写,子类会覆盖掉父类的。

  1. 静态方法

编译看左边,运行看左边。(静态和类相关,算不上重写,所以访问的还是左边的,即父类的。)

 

多态的好处:

  1. 提高了代码的可维护性(继承保证)
  2. 提高了代码的可扩展性

 

多态的弊端:

只能使用父类中定义过的功能,不能使用子类的特有功能。

如何解决呢?

  1. 创建子类对象调用该子类的方法。(可以,但是不合理,而且太占内存)
  2. 把父类的引用强制转换为子类的引用。(向下转型)

对象间的转型问题:

  1. 向上转型

Fu f =new Zi();//子类转换为父类

  1. 向下转型

Zi z =(Zi) f;//要求父类f必须是能够转换为子类的,即该f是事先经过向上转型过的

编程中,如果出现ClassCastException报错,多出现在多态的向下转型中相互转型的两个类不匹配造成的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值