多态

一、定义

多态是面向对象的核心。

也叫动态绑定,是指在执行期间(而非编译期间)判断所引用对象的实际类型,并根据引用对象的实际类型来调用相应的方法。

二、必要条件

1.必须有继承;

2.子类必须重写父类的方法;

3.必须有父类引用指向子类对象。

三、内存图解析

1.要点说明:

a. new子类对象时,子类对象中会包着一个父类对象;

b. lady对象中有个Animal类型的变量,实际在new lady,并且为其设置cat值时,该变量会指向cat对象。

c. 在调用lady的pet的“叫”方法时,实际所有的方法都在code seg区域,而pet对象中有个指针会判断该引用的实际类型,并指向该类型对象的方法,即动态绑定。

图片发自App


图片发自App


四、意义

多态是面向对象的核心,极大的提高了可扩展性(有变动时,不用修改代码)。

例子中,lady的pet是Animal类型,调用pet的“叫”方法时,不用判断Animal的实际类型,来决定调用的方法,多态机制会自动判断实际类型来选择调用的方法。

你可能感兴趣的:(多态)