博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
多态的动态绑定
阅读量:4325 次
发布时间:2019-06-06

本文共 1608 字,大约阅读时间需要 5 分钟。


1.多态中的成员变量

/** * 多态 动态绑定 *  * @author wql * */class Fu {
int num = 3;}class Zi extends Fu {
int num = 4; //这里并不是覆盖,变量不存在覆盖}public class Demo {
public static void main(String[] args) { Fu f = new Zi(); //向上转型 System.out.println(f.num); }}

运行结果

3

这里写图片描述

在多态中的成员变量:
编译时:参考引用变量所属的类中是否有调用的成员变量,若有、编译成功,若无、编译失败(父类不可以调用子类特有的成员变量)
运行时:参考引用变量所属的类中是否有调用的成员变量,并运行该所属类中的成员变量
简单说:编译和运行都参考等号左边


2.多态中的成员函数

class Fu {
void show(){ System.out.println("fu...show"); }}class Zi extends Fu {
void show(){ System.out.println("zi...show"); }}public class Demo {
public static void main(String[] args) { Fu f = new Zi(); //向上转型 f.show(); //此时父类带有的引用地址是子类对象在堆中的地址,当其调用函数方法时,会优先考虑子类对象中的,这就是动态绑定 }}

运行结果

zi…show

在多态中的成员函数:

编译时:参考引用变量所属的类中是否有调用的函数,若有、编译成功,若无、编译失败(父类不可以调用子类特有的函数方法)
运行时:参考对象所属的类中是否有调用的成员函数,若有、并运行该成员函数,若无,则通过super();去调用父类中该成员函数
简单说:编译参考等号左边,运行都参考等号右边


3.

class Fu {
static void show(){ System.out.println("fu..static..show"); }}class Zi extends Fu {
static void show(){ System.out.println("zi..static..show"); }}public class Demo2 {
public static void main(String[] args) { Fu f = new Zi(); //向上转型 //静态函数方法有些特殊,其实静态函数并不需要对象来调用,直接用类名调用即可,因为它并不存在于内存的堆中,是在内存的方法区中,当多态子类去调用时,会优先考虑父类 f.show(); }}

运行结果

fu..static..show

在多态中的静态方法:

编译时:参考引用变量所属的类中是否有调用的静态方法,若有、编译成功,若无、编译失败(父类不可以调用子类特有的静态方法)
运行时:参考引用变量所属的类中是否有调用的静态方法,并运行该方法
简单说:编译运行都参考等号左边


之前转载过别人写的类似文章(),随着学习觉得自己也有些理解,便在此分享下,不足之处,望指出,一起交流

转载于:https://www.cnblogs.com/wangqilong/p/9417570.html

你可能感兴趣的文章
阶段3 3.SpringMVC·_03.SpringMVC常用注解_3 PathVariable注解
查看>>
阶段3 3.SpringMVC·_03.SpringMVC常用注解_4 HiddentHttpMethodFilter过滤器
查看>>
阶段3 3.SpringMVC·_03.SpringMVC常用注解_6 CookieValue注解
查看>>
阶段3 3.SpringMVC·_03.SpringMVC常用注解_5 RequestHeader注解
查看>>
阶段3 3.SpringMVC·_03.SpringMVC常用注解_7 ModelAttribute注解
查看>>
阶段3 3.SpringMVC·_04.SpringMVC返回值类型及响应数据类型_1 搭建环境
查看>>
阶段3 3.SpringMVC·_03.SpringMVC常用注解_8 SessionAttributes注解
查看>>
阶段3 3.SpringMVC·_04.SpringMVC返回值类型及响应数据类型_3 响应之返回值是void类型...
查看>>
阶段3 3.SpringMVC·_04.SpringMVC返回值类型及响应数据类型_2 响应之返回值是String类型...
查看>>
阶段3 3.SpringMVC·_04.SpringMVC返回值类型及响应数据类型_4 响应之返回值是ModelAndView类型...
查看>>
阶段3 3.SpringMVC·_01.SpringMVC概述及入门案例_01.SpringMVC概述及入门案例
查看>>
阶段3 3.SpringMVC·_04.SpringMVC返回值类型及响应数据类型_6 响应json数据之过滤静态资源...
查看>>
阶段3 3.SpringMVC·_04.SpringMVC返回值类型及响应数据类型_5 响应之使用forward和redirect进行页面跳转...
查看>>
阶段3 3.SpringMVC·_04.SpringMVC返回值类型及响应数据类型_8 响应json数据之响应json格式数据...
查看>>
阶段3 3.SpringMVC·_04.SpringMVC返回值类型及响应数据类型_7 响应json数据之发送ajax的请求...
查看>>
阶段3 3.SpringMVC·_05.文件上传_2 文件上传之传统方式上传代码回顾
查看>>
阶段3 3.SpringMVC·_05.文件上传_1 文件上传之上传原理分析和搭建环境
查看>>
阶段3 3.SpringMVC·_05.文件上传_4 文件上传之Springmvc方式上传代码
查看>>
阶段3 3.SpringMVC·_05.文件上传_3 文件上传之Springmvc方式上传原理分析
查看>>
阶段3 3.SpringMVC·_05.文件上传_6 文件上传之跨服务器上传代码
查看>>