多态学习笔记

多态学习笔记

概念

多态是一个事物在不同时刻体现的不同形态(内存中的变化)

前提条件

1.必须存在继承关系

2.必须有方法重写

3必须存在父类引用 指向子类对象(向上转型)

格式

class Fu{}

class Zi extends Fu{}

Fu fu=new Zi();

多态中成员访问

成员变量,编译看左,运行看左,

内存中:引用父类创建对象,在堆内存中创建对象的同时,堆内存中会传入父类的成员变量;

非静态成员方法,编译看左,运行看右,

内存中:创建对象时,子类方法函数会随空间地址一并指引给父类,使用方法会在栈内存中开辟空间访问子类的方法;

静态成员方法,编译看左,运行看左。

内存中,在父类的加载的同时,父类的静态方法跟随父类加载,子类的方法随指引但是不能发生覆盖,没有发生方法的重写;

访问构造方法,先初始化父类,再初始化子类;

多态的优点

提高代码的复用性(继承)

提高代码的扩展性(父类引用指向子类,可无限创建父类对象访问子类多样的方法)

多态的缺点

不能访问子类的特有功能

如果访问子类的特有功能?

1.创建子类对象访问自己的方法

2.将父类向下转型为子类,就可以访问了(更节省内存);

Fu fu=new Zi();

Zi z=(Zi)f;

转换时之一出现ClassCastException,类转换异常:堆内存的变化,和接受的类型不匹配

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值