Java基础系列第二弹之Java多态成员访问的特点
前言
每天将自己已经学习过的知识整理成笔记,养成写博客的好习惯.学而时习,之不亦乐乎?
我也是在不断学习的过程中,文章中的问题理解不到位的地方甚至出现的错误,欢迎大家指出,我会及时订正.
每个问题都会进行小结,不想看过程的可以直接跳到小结部分.
真正的前言
Java基础系列第一弹之方法重载和方法重写的区别
在上一篇文章中介绍了方法重载和方法重写的区别,但是在多态情况下发现程序的执行结果和我们预期的不太一样,这篇将继续介绍多态场景下,Java成员访问的特点
Java多态成员访问的特点
多态概要
多态是面向对象编程的三个特性之一,这里不展开做过多介绍,有机会专门写一个关于继承,封装,多态三大特性的文章.
我之前在力扣学习模块中整理过一部分关于这方面的内容,可以先简单了解一下.
力扣知补-面向对象-继承-垃圾回收
Java多态使用最多的场景在于父类引用指向子类对象.
多态的前提:
- 存在继承关系(Son继承Father)
- 存在方法重写(Son重写Fahter中的Walk方法)
- 父类引用指向子类对象(
Father father = new Son(true);
)
Java多态情景下成员访问特点
多态情景下主要涉及三部分的访问规则,分别是对成员变量,成员方法和静态方法的访问.
这里只拷贝多态测试类的代码,同时简单介绍一下Father类和Son类的情况.
Father类中有一个boolean canRun
变量固定为False
,子类中的canRun
成员变量由构造方法传入.
walk(boolean canRun):如果canRun是True则输出Father/Son可以跑,否则输出Father/Son只能走.
public class Test