Java编译时类型和运行时类型「建议收藏」

Java编译时类型和运行时类型「建议收藏」一、前言最近在做笔试题的时候,才看到有这么一个知识点,查了好几篇博客,在这里记录一下二、是什么Java引用变量有两个类型,一个是编译时类型,还有一个是运行时类型。编译时类型是由声明该变量时使用的类型所决定,运行时类型是由该变量指向的对象类型决定如果两种类型不一致,就会出现多态,因此就会将子类对象之间赋值给父类引用变量,称为向上转型,而不用进行类型转换。如Animal…

大家好,又见面了,我是你们的朋友全栈君。

一、前言

最近在做笔试题的时候,才看到有这么一个知识点,查了好几篇博客,在这里记录一下

二、是什么

Java引用变量有两个类型,一个是编译时类型,还有一个是运行时类型

编译时类型是由声明该变量时使用的类型所决定,运行时类型是由该变量指向的对象类型决定

如果两种类型不一致,就会出现多态,因此就会将子类对象之间赋值给父类引用变量,称为向上转型,而不用进行类型转换。如 Animal a = new Bird(),其中引用变量 a 的编译时类型是 Animal,运行时类型是 Bird,两者不一致,因此出现多态

当使用该对象引用进行调用的时候,有这么一条规则,对象调用编译时类型的属性和运行时类型的方法

我们直接看一个例子来验证这句话

class Person { 
   
    public String name;

    public Person() { 
   
        name = "person";
    }

    public void show() { 
   
        System.out.println("person show");
    }
}

class Woman extends Person { 
   
    public String name;

    public Woman() { 
   
        name = "woman";
    }

    public void show() { 
   
        System.out.println("woman show");
    }
}

public class TestDemo { 
   

    public static void main(String[] args) { 
   
        Person person = new Person();
        System.out.println(person.name);
        person.show();

        System.out.println();

        Person person1 = new Woman();
        System.out.println(person1.name);
        person1.show();

        System.out.println();

        Woman woman = new Woman();
        System.out.println(woman.name);
        woman.show();
    }

}

结果:

person
person show

person
woman show

woman
woman show

从结果可以看出,第一条语句 person 引用调用的属性属于 Person 类,person 引用调用的方法还是 Person 类;之后以此类推

三、参考

https://blog.csdn.net/snow_7/article/details/51579278
https://blog.csdn.net/qq_29513537/article/details/60765552
https://blog.csdn.net/qq_23419401/article/details/52064871#java

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/139845.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • Liunx常用命令

    Liunx常用命令Liunx常用命令

  • 2021年调味品行业发展的现状_2020年调味品行业所处阶段

    2021年调味品行业发展的现状_2020年调味品行业所处阶段2021年,受到需求收缩、成本上涨、预期转弱等因素叠加的影响,调味品行业发展面临巨大挑战,多数调味品上市公司发展趋缓。一、调味品上市公司经营现状2021年,16家调味品上市公司营业收入合计为871亿元,营业收入正增长的有12家,占16家上市公司的75%,其中营业收入排名前三位的公司分别是海天味业、梅花生物和安琪酵母,营业收入分别是250亿元、228.4亿元、106.8亿元,分别同比增长9.7%、33.9%、19.5%。2021年中国调味品上市公司营业收入及同比增长资料来源:中国调

    2022年10月31日
  • 系统可用性几个9

    系统可用性几个9经常看到各种技术文章或者分布式系统介绍说系统的可用性达到了多少个9,那么所谓”几个9“到底是怎么计算的?又意味着什么?我们简单计算分析下看看。所谓”1个9“是指90%,”2个9“是指99%,”3个9“是指99.9%,依次类推。可用性的反面是故障时间,网站或者分布式系统会因为很多原因导致不可用,比如:程序bug;运维更新错误;环境配置升级变化;机器硬件故障;被恶意攻击;网关不小心踢掉了网线/电源插座…

  • java softreference_Java引用总结–StrongReference、SoftReference、WeakReference、PhantomReference…[通俗易懂]

    java softreference_Java引用总结–StrongReference、SoftReference、WeakReference、PhantomReference…[通俗易懂]Java引用总结–StrongReference、SoftReference、WeakReference、PhantomReference1Java引用介绍Java从1.2版本开始引入了4种引用,这4种引用的级别由高到低依次为:强引用>软引用>弱引用>虚引用⑴强引用(StrongReference)强引用是使用最普遍的引用。如果一个对象具有强引用,那垃…

  • mt4历史数据下载位置_头榜土豪数据中心

    mt4历史数据下载位置_头榜土豪数据中心    打开MT4,按F2,会出现一个历史数据中心对话框。之前,我直接按下载按钮时,往往下载数据会出错。因此百度了很久,也查看了很多的处理方式,觉得都不尽如人意。不是数据找不到,就是即使找到了下载时也出现问题。    近日又捣弄了一番,跑到MT4中的history文件夹,发现里面有各个我以前申请的模拟帐户,而且是不同公司下的帐户。这突然让我意识到,我在历史数据中心对话框中点击下载时出现的警

  • PHP网站从Apache转移到Nginx后产生404错误的原因和解决办法

    PHP网站从Apache转移到Nginx后产生404错误的原因和解决办法

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号