难度
初级
学习时间
10分钟
适合人群
零基础
开发语言
Java
开发环境
- JDK v11
- IntelliJ IDEA v2018.3
提示
本教学属于系列教学,内容具有连贯性,本章使用到的内容之前教学中都有详细讲解。
1.字段
字段就是与对象或类关联的变量。
2.多态
如果我们只写这样一个简单的方法,它只接收一个父类作为参数,而不是以子类作为接收参数,这样的话只要传递父类及其子类都可以,这个过程我们就称之为多态。
演示:
多态的应用。
代码:
Animal类:
Cat类:
Dog类:
Main类:
结果:
多态的应用有很多,这里就不再多展示。
3.多态与字段
为什么要说说多态与字段呢?
字段访问操作都将由编译器解析,因此不是多态的。
演示:
请在父类中定义一个实例变量和一个类变量,给实例变量和类变量提供get方法。子类也有一份和父类一摸一样的实例变量和类变量,并且也提供get方法,涉及到重写方法的请加注解。另外,请在子类中额外提供一个获取父类实例变量和类变量的方法。
注:父类和子类中所有实例变量和类变量访问修饰符都是public的。
代码:
Animal类:
Cat类:
Main类:
结果:
animal.name在编译时期就已经指定了,就是父类Animal的实例变量值。
animal.getName()这个属于方法的动态绑定,主要是发生在运行时期,所以实际调用的是子类Cat里面的实例方法。
animal.ID是类变量,直接与类关联,所以直接是父类Animal中的类变量值。
animal.getID是类方法,直接与类关联,所以直接调用父类Animal中类方法。
解释完运行结果之后,我们再来看看下面程序的答案是什么:
代码:
其他类不变。
修改Main类:
结果:
因为自身类中指向自身对象,所以也就不存在多态。无论是调用字段还是方法都是从子类Cat中执行。
总结
- 字段访问操作都将由编译器解析,因此不是多态的。
- 静态方法和变量是与类,而并非与单个的对象相关联的。
至此,Java中多态与字段相关内容讲解先告一段落,更多内容请持续关注。
答疑
如果大家有问题或想了解更多前沿技术,请在下方留言或评论,我会为大家解答。
上一章
“全栈2019”Java第五十五章:方法的静态绑定与动态绑定
下一章
“全栈2019”Java第五十七章:多态与构造方法详解
学习小组
加入同步学习小组,共同交流与进步。
- 方式一:关注头条号Gorhaf,私信“Java学习小组”。
- 方式二:关注公众号Gorhaf,回复“Java学习小组”。
全栈工程师学习计划
关注我们,加入“全栈工程师学习计划”。
版权声明
原创不易,未经允许不得转载!