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)


相关推荐

  • 数据仓库分三层_数据库分层

    数据仓库分三层_数据库分层数据仓库各层说明: 一、数据加载层:ETL(Extract-Transform-Load) 二、数据运营层:ODS(OperationalDataStore) 三、数据仓库层:DW(DataWarehouse) 1.数据明细层:DWD(DataWarehouseDetail) 2.数据中间层:DWM(DataWareHouseMiddle) 3.数据服务层:DWS(DataWareHouseService) 四、数据应用层:A

  • 大气压力换算公式_气压单位换算表(压力单位换算公式大全)

    大气压力换算公式_气压单位换算表(压力单位换算公式大全)1bar=105Pa,一个标准大气压=1.01325*105Pa;1bar=0.98665标准大气压1巴(bar)=100,000帕(Pa)=10牛顿/平方厘米=0.1MPa是压强的单位,早先气象学中常用毫巴.咱们这教材,气压单位一会是hPa,一会是mb,也不说声是什么意思,网上又。mb=mbar毫巴(=百帕)mbar毫巴(=百帕)hPa百帕1百帕=1毫巴=3/4毫米水银柱.参考资料…

  • 推荐几款流行的开源报表工具[通俗易懂]

    推荐几款流行的开源报表工具[通俗易懂]转自:http://www.anyrt.com/blog/sourcereport.html1.JasperReportJasperReport是最流行的开源报表工具之一,基于GPL开源许可协议,完全采用java编写,支持多种数据源,可打印或导出多种文件格式,支持PDF、HTML、XLS、CSV和XML文件输出格式。JasperReport也包含多个组件:JasperR…

    2022年10月20日
  • 二传感器尺寸「建议收藏」

    二传感器尺寸「建议收藏」说到传感器的尺寸,其实是说感光器件的面积大小,这里就包括了CCD和CMOS。感光器件的面积越大,CCD/CMOS面积越大,捕捉的光子越多,感光性能越好,信噪比越高。下面是家用小DC图像传感器尺寸换算为公制的大小(单位为毫米):2/3英寸的画幅面积为(8.8×6.6mm)1/1.8英寸的画幅面积为(7.178×5.319mm)1/2英寸的画幅面积为(6.4×4.8mm)1/2.7英寸的画幅面…

  • pac模式与全局模式哪个好_直连模式pac模式全局模式

    pac模式与全局模式哪个好_直连模式pac模式全局模式区别一:使用流量多少不一样。PAC模式:节省流量。全局模式:流量消耗较多。区别二:运行速度快慢不一样。PAC模式:国内网站依旧走本地网络,速度快,绝大部分国外网站都走代理,速度也快。。全局模式:所有网站都走代理,访问国内网站速度变慢。区别三:访问网站覆盖面不一样。PAC模式:少部分国外网站不走代理,无法起到加速效果,甚至无法访问。全局模式:可访问全球所有网站。区别四:运行原理不一样。PAC模式:所有http/socks数据经过…

    2022年10月19日
  • android之database disk image is malformed (code 11)

    做来电显示归属地和查询归属地功能的时候,需要从服务器下载数据库,但是下载之后,查询总是报错database disk image is malformed (code 11)开始以为是查询语句不对,后来意识到,跟之前解析包时出现错误是一样的问题,下载过程中格式损坏了。于是解决方法跟http://blog.csdn.net/jason0539/article/details/2174

发表回复

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

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