java中编译类型的方法 和 运行时的类型方法 有什么区别

1:引言

这是在复习多态当中,看到不太理解的东西, 就是 Java编译类型和运行类型

2:多态

多态首先得是在 有继承关系和方法重写的类当中;指同一个方法在被调用时,由于对象不同则会有不同的效果()。

3:编译时类型和运行时类型

Java的引用变量有两个类型,一个是编译时类型,一个是运行时类型,编译时类型由声明该变量时使用的类型决定,运行时类型由实际赋给该变量的对象决定。
举例说明:
Person p=new Women()(Women类继承自Person类)那么,假如p的属性修饰符为public 访问属性时得到的是Person类的属性还是Women类的属性,方法调用又是哪个类?答案:会得到Person类的属性,调用Women类的方法。为什么会这样呢?这里就需要知道什么是编译时类型和运行时类型,Java程序状态会分为编译和运行这两种状态,编译时,JVM会在栈中静态创建基本数据变量,和引用数据变量的引用,回到刚刚那句代码,显然,p这个引用就是在编译时创建的,那么,p的编译时类型就是Person了,当运行这句java代码时,JVM在堆中为p新建一块内存,对应new Women()这句代码,所以p的运行时类型就是Women

所以 ,我们都知道在栈内存当中存放一些引用和变量,在堆内存中存放对象。编译时期可以理解为堆内存中还没有为该对象创建内存,只是在栈中创建了一些基本类型的变量和引用,所以编译时类型就是指在new该对象之前被加载到栈中的属性或方法。而运行时类型,是指new了一个对象出来,在栈中为该对象分配了内存,此时的运行时类型也就是栈中对象的属性或方法了。

4:对象的转型

父类引用指向 子类对象,我们称之为 向上转型 属于自动类型转换
向上转型后父类 引用变量只能调用它 编译类型的方法 不能调用运行时的类型方法,(即调用父类当中的方法)

如果想要调用运行时的类型和方法 则可以 强制向下转型(即调用子类的方法)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/308542.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[Redis6]发布和订阅

Redis6的发布和订阅 什么是发布和订阅 Redis 发布订阅 (pub/sub) 是一种消息通信模式:发送者 (pub) 发送消息,订阅者 (sub) 接收消息。 Redis 客户端可以订阅任意数量的频道。 发布订阅命令行实现 打开一个客户端订阅channel1 打开另一个客户端&…

mysql innodb log_教你如何理解mysql中的innoDB log

前言:之前一直弄不清楚mysql里面bin log和innodb log文件的区别,在脑子里面一直有个疑问binlog日志文件已经可以用来进行数据库的日志备份恢复了,怎么又多了一个redo log文件了。相信也有很多人有这个疑惑,现在把整个过程文档整理出来&#x…

解决Java当中 用point 画图时背景颜色变成黑色问题

一:导入与源码 package src.cn.wyj.飞机;import java.awt.Color; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import javax.swing.JFrame;public class MyGame1 extends JF…

微服务框架Demo.MicroServer运行手册

一.背景说明:之前分享过一个微服务开发框架, “分享一个集成.NET CoreSwaggerConsulPollyOcelotIdentityServer4ExceptionlessApolloSkyWalking的微服务开发框架”,前两天在Github上收到一个Issues,是想我这边提供下完整的运行文档…

[Redis6]新数据类型_Bitmaps

Bitmaps 简介 现代计算机用二进制(位) 作为信息的基础单位, 1个字节等于8位, 例如“abc”字符串是由3个字节组成, 但实际在计算机存储时将其用二进制表示, “abc”分别对应的ASCII码分别是97、 98、 99&a…

mysql qps如何查看_一款查看mysql QPS的脚本

本脚本黏贴就可以使用绝对不坑人!!!(此脚本来源如一位大神网友)执行效果:脚本:#!/bin/bashPWEqipay20150504mysqladmin -P3306 -uroot -p$PW -r -i 1 ext |\awk -F"|" \"BEGIN{ count0; }"\{ if($…

C++中判断在字符串中是否存在空格 以及 如何输入带空格的字符串

1&#xff1a;引言&#xff1a; 输入带空格的字符串 需要用到 getline(cin,str);具体在代码中看 2&#xff1a;上码 #include<bits/stdc.h> using namespace std;int main(){vector<string>v1;for( int i 0; i < 2; i ){string temp;getline(cin,temp);//输…

.Net Core 自定义配置源从配置中心读取配置

配置&#xff0c;几乎所有的应用程序都离不开它。.Net Framework时代我们使用App.config、Web.config&#xff0c;到了.Net Core的时代我们使用appsettings.json&#xff0c;这些我们再熟悉不过了。然而到了容器化、微服务的时代&#xff0c;这些本地文件配置有的时候就不太合适…

[Redis6]Bitmaps与set对比

Bitmaps与set对比 但Bitmaps并不是万金油&#xff0c; 假如该网站每天的独立访问用户很少&#xff0c; 例如只有10万&#xff08;大量的僵尸用户&#xff09; &#xff0c; 那么两者的对比如下表所示&#xff0c; 很显然&#xff0c; 这时候使用Bitmaps就不太合适了&#xff0c…

MySQL分布式ID_分布式唯一ID系列(3)——数据库自增ID机制适合做分布式ID吗

数据库自增ID机制原理介绍在分布式里面&#xff0c;数据库的自增ID机制的主要原理是&#xff1a;数据库自增ID和mysql数据库的replace_into()函数实现的。这里的replace数据库自增ID和mysql数据库的replace_into()函数实现的。这里的replace into跟insert功能类似&#xff0c;不…

7-15 QQ帐户的申请与登陆 (25 分)(map做法+思路分析)

一&#xff1a;题目 实现QQ新帐户申请和老帐户登陆的简化版功能。最大挑战是&#xff1a;据说现在的QQ号码已经有10位数了。 输入格式: 输入首先给出一个正整数N&#xff08;≤10 ​5 ​​ &#xff09;&#xff0c;随后给出N行指令。每行指令的格式为&#xff1a;“命令符&a…

[Redis6]新数据类型_HyperLogLog

HyperLogLog 简介 在工作当中&#xff0c;我们经常会遇到与统计相关的功能需求&#xff0c;比如统计网站PV&#xff08;PageView页面访问量&#xff09;,可以使用Redis的incr、incrby轻松实现。 但像UV&#xff08;UniqueVisitor&#xff0c;独立访客&#xff09;、独立IP数…

每天都在支付,你真的了解信息流和资金流?

作为一个财务类的产品经理&#xff0c;除了每天被财务“虐待”千百遍&#xff0c;还需要对整个资金流向很清楚&#xff1a;钱给谁&#xff0c;怎么给&#xff0c;怎么做逆向流程&#xff0c;谁参与容错等。财务很在意资金的流转安全&#xff0c;但又极不愿意花时间关注它。诸如…

mysql改表字段类型导致数据丢失_故障分析 | 记一次 MySQL 主从双写导致的数据丢失问题【转】...

一、问题起源不久前用户反馈部门的 MySQL 数据库发生了数据更新丢失。为了解决这个问题&#xff0c;当时对用户使用的场景进行了分析。发现可能是因为用户在两台互为主从的机器上都进行了写入导致的数据丢失。如图所示&#xff0c;是正常和异常情况下应用写入数据库的示例。随后…

[Redis6]新数据类型_Geospatial

Geospatial 简介 Redis 3.2 中增加了对GEO类型的支持。GEO&#xff0c;Geographic&#xff0c;地理信息的缩写。该类型&#xff0c;就是元素的2维坐标&#xff0c;在地图上就是经纬度。redis基于该类型&#xff0c;提供了经纬度设置&#xff0c;查询&#xff0c;范围查询&…

C++中输入一组数字 以换行符结束输入

一&#xff1a;引言 这个直接上码拿去直接用 二&#xff1a;上码 这个输入是 未知 输入 数字的个数 所以用了 while &#xff08;1&#xff09;死循环 然后结束 循环的条件是 输入的为换行符则输入结束 #include<bits/stdc.h> using namespace std;int main(){map<…

《Apache SkyWalking实战》送书活动结果公布

截至2020.07.31 本次送书活动 这么多Apache顶级项目&#xff0c;SkyWalking为何一枝独秀&#xff1f;&#xff0c;本次很多同学在看到活动的书&#xff0c;自行就到网上购买了书。下面把Top 8的留言截图给大家回顾一下。以下8位同学将获赠书籍一本&#xff1a;landon、田晓青、…

jsp解决mysql乱码_jsp+mysql时乱码的解决

刚来了sohu.blog,那就来个原创吧.由于最近不知道发什么神经了,非常喜欢mysql(那是免费的吖,谁不喜欢呢),而jsp就学了10多天,然后我听说jspmysql在进行相连操作的时候会经常出现乱码的情况.那我就把心一横,我也来试试吧.谁知道一试,在jsp里使用mysql官方所提供的mysql驱动程序,果…

7-16 一元多项式求导 (20 分)(详解+题目分析)

7-16 一元多项式求导 (20 分) 1&#xff1a;题目 设计函数求一元多项式的导数。 输入格式: 以指数递降方式输入多项式非零项系数和指数&#xff08;绝对值均为不超过1000的整数&#xff09;。数字间以空格分隔。 输出格式: 以与输入相同的格式输出导数多项式非零项的系数和…

[MyBatisPlus]通用枚举

通用枚举 数据库表添加字段sex 创建通用枚举类型 package com.xxxx.mybatisplus.enums;import com.baomidou.mybatisplus.annotation.EnumValue; import lombok.Getter;Getter public enum SexEnum {MALE(1,"男"),FEMALE(2,"女");EnumValue // 将注解所标…