java中静态方法可以被继承_关于java:静态方法中的继承
为什么下面的代码会打印"MAIN"?
public class Main
{
public static void method()
{
System.out.println("Main");
}
public static void main(String[] args)
{
Main m = new SubMain();
m.method();
}
}
class SubMain extends Main
{
public static void method()
{
System.out.println("SubMain");
}
}
在运行时,m指向Submain的一个实例,因此它在概念上应该打印"submin"。
甚至可以编写Main m = null;,然后调用该方法,在点之前的表达式根本不用。
静态方法根据变量的编译时类型进行解析。m是Main类型,因此调用Main中的方法。
如果将其更改为SubMain m ...,则将调用SubMain上的方法。
除了这个答案,我建议您不要从实例对象调用静态方法,也不要从类名调用它们(例如:submin.method(),而不是m.method())。
这就是为什么Java试图在实例对象上调用静态方法时警告您的原因。
"Erim装修Java不警告你,但你的IDE会警告你。
这是因为静态方法不是多态的。此外,静态方法不应该由对象调用,而应该使用类,即Main.method()或SubMain.method()来调用。当你调用EDCOX1,11时,Java实际上调用EDCOX1×6,因为M是MyType。
如果你想享受多态性,不要使用静态方法。
当我尝试做这种事情时,Eclipse会给我这样的警告:
The static method XXX() from the type XXX should be accessed in a static way
静态方法不参与继承。变量的类型为Main,因此编译器将函数调用解析为Main.method()。
为了增加乐趣,尝试将m设置为null。
Java对静态方法执行早期绑定,不同于动态绑定的实例方法。
因为对象变量的类型是main,所以调用在编译时绑定到超类实现。
这里有一个很好的解释。
静态方法与类名静态绑定,因为m是主类的类型然后在编译之后,它看起来如下主要方法。在你的课程汇编之后运行以下命令JAVAP—C主您可以看到主类的JVM程序集代码你会看到下面m.method//调用静态invoke static,invoke special告诉静态绑定invoke special,invoke接口告诉动态绑定
java中静态方法可以被继承_关于java:静态方法中的继承相关推荐
- 【源码+图片素材】Java王者荣耀游戏开发_开发Java游戏项目【王者荣耀】1天搞定!!!腾讯游戏_Java课程设计_Java实战项目_Java初级项目
王者荣耀是当下热门手游之一,小伙伴们是否想过如何制作一款属于自己的王者荣耀游戏呢? 本课程讲解了一个王者荣耀游戏的详细编写流程,即使你是刚入门Java的新手,只要你简单掌握了该游戏所需要的JavaSE ...
- .Net 6.0中的新增特性_.Net 6.0中的新增功能
.Net 6.0中的新增特性_.Net 6.0中的新增功能 一..Net 6 介绍 .NET 6 作为 LTS 长期支持版本,.NET 6 将会获得 3 年的技术支持. .NET 6 是首个原生支持 ...
- css如何保留空格,HTML/CSS中的空格处理_如何保留页面中的空格
html中的空格的规则 在html中内容中的多个空格一般会被视为一个,连续的多个空格符被自动合并了.同时内容前后的空格也会被清除, 如下: fly63 com 显示效果为: fly63 com 备注: ...
- amp jsp空格 nps_HTML/CSS中的空格处理\_如何保留页面中的空格【转】
HTML/CSS中的空格处理\_如何保留页面中的空格[转] HTML中的空格的规则 在html中内容中的多个空格一般会被视为一个,连续的多个空格符被自动合并了.同时内容前后的空格也会被清除, 如下: ...
- java中井号字符串_深入Java基础(二)——字符串
这段时间在准备找一份java实习工作,所以来把基础知识整理归纳一下 文章结构: 1.equals和== 2.字符串的基本知识以及字符串的源码解读: 3.字符串的注意点以及使用推荐: 一.equals和 ...
- formdata 接受参数中带有class 对象_浅析JAVA中的反射机制及对Servlet的优化
今天来聊聊java中的反射机制,工作以后发现很多东西动不动就要使用反射或者动态代理,如果不能很好的理解反射,那么对于动态代理等一些重要的设计模式就会有种不够通透的感觉. 所谓的反射,就是在运行状态中, ...
- java中的单例_细说Java中的几种单例模式
在Java中,单例模式分为很多种,本人所了解的单例模式有以下几种,如有不全还请大家留言指点: 饿汉式 懒汉式/Double check(双重检索) 静态内部类 枚举单例 一.饿汉式 image 饿汉式 ...
- java中字符流 字节流_理解Java中字符流与字节流的区别
1. 什么是流 Java中的流是对字节序列的抽象,我们可以想象有一个水管,只不过现在流动在水管中的不再是水,而是字节序列.和水流一样,Java中的流也具有一个"流动的方向",通常可 ...
- java中的最终变量_在lambda表达式中使用的变量应该是最终变量或有效的最终变量。...
A final变量意味着它只能被实例化一次.在Java中,您不能在lambda和匿名内部类中使用非最终变量. 您可以使用旧的for-each循环重构代码:private TimeZone extrac ...
最新文章
- 万字总结webpack实战案例配置
- BugkuCTF-Reverse题love
- vmware player 坑
- 数据结构——一些小点
- Visio高级使用技巧
- 焦作哪里有学机器人编程_焦作自学plc入门梯形图编程去哪学
- ArcFace阈值选择
- MySQL/Mariadb基准测试工具-TPC,TPCC,TPMC(计算机性能衡量指标)
- 【电脑运用及修理】6套台式组装机电脑配置清单大全(2022年618)
- java mpeg ps转mpeg-4_MPEG4格式转换器下载_枫叶MPEG4格式转换器(MPEG转换器) 9.0.5.0 共享版_极速下载站...
- 【引用】男人爱你的三个细节
- 英语口语收集(十五)
- Servlet判断用户是否登陆过、异地登录和登出功能
- 1024程序员节日,祝愿所有的程序员节日快乐
- chrome扩展程序_如何实施Chrome扩展程序
- Mac配置item2高亮颜色
- 使用Termux把Android手机变成SSH服务器
- 【matplotlib】散点图详解
- 搜索 php源码,影视搜索php源码
- 居家学习:新冠肺炎疫情下中国高校基于直播的远程教育体验的混合方法分析