java方法不可覆盖_详解Java构造方法为什么不能覆盖,我的钻牛角尖病又犯了.......

看Think in Java,遇到个程序

classEgg2 {protected classYolk {publicYolk() {

System.out.println("Egg2.Yolk()");

}public voidf() {

System.out.println("Egg2.Yolk.f()");

}

}private Yolk y = newYolk();publicEgg2() {

System.out.println("New Egg2()");

}public voidinsertYolk(Yolk yy) {

y=yy;

}public voidg() {

y.f();

}

}public class BigEgg2 extendsEgg2 {public class Yolk extendsEgg2.Yolk {publicYolk() {

System.out.println("BigEgg2.Yolk()");

}public voidf() {

System.out.println("BigEgg2.Yolk.f()");

}

}publicBigEgg2() {

insertYolk(newYolk());

}public static voidmain(String[] args) {//Egg2 e1 = null;//Egg2 e2 = new BigEgg2();//new Egg2();

newBigEgg2();//e2.g();

}

}///:~

输出

Egg2.Yolk()

New Egg2()

Egg2.Yolk()

BigEgg2.Yolk()

其实基本上我根据后面的几个注释,也大概明白了看的顺序构造顺序是什么,见图

c2d287a9d82812b134764ec90a88c652.png

构造顺序图

858f22e65ed54ba0f2f9ff99e70a3cc1.png

但是,看了输出,我就纳闷为什么,为什么第三行不是BigEgg2.Yolk(),不能覆盖吗?

Egg2.Yolk()

New Egg2()

Egg2.Yolk()

BigEgg2.Yolk()

分析一下

BigEgg2是Egg2的子类,他们都有Yolk的内部类,而且BigEgg2.Yolk继承了Egg2.Yolk。注意此处,同名类可以继承。

那么,他们构造方法为什么不能覆盖,都是Public Yolk(){}。

当然,网上都说子类继承父类除构造方法以外的所有方法,但这是结果,我要知道为什么!!

先说几个错误的观点

1.

有说构造方法的方法名与类名必须一样,父子类不能同名,故不能继,所以不能覆盖构造方法。

这个不用多说,这个例子,就是大神写出来打这样说的人的脸的。

2.

有说因为子类继承父类的时候,先运行父类构造函数;具体的说就是运行父类时就会先“调用”父类的构造函数,注意“调用”和继承不是一个含义,实质上是“自动运行”。

这个强行用中文语法来解释的,达到中文6级了啊。

3.

有说构造方法不是成员函数,故不能继承,所以谈不上覆盖。

这个真的有道理,是java官方文档上的。大多数人找到这里估计就满足了。

但是,跟太阳从东方升起西方落下那样,我想知道为甚么这么设计啊啊啊啊啊啊!!!!!

4.

正确答案

(1).构造器代表这个类本身,在创建之时申请内存。

(2).子类创建的时候,会默认在构造方法的第一行调用父类的默认构造方法-,若修改了必须显示调用。(这就是为什么创建子类时先创建完父类的原因了)

那么很明显了,要是同名类之间可以覆盖了,子类创建时就是创建了两个自己而没有父类。

Java设计的时候,他们绝对想到有些人会像强迫症那样折腾个同名类继承,然后实现构造覆盖的场景吧....

总结

构造方法是唯一的,不能又造爸爸又造儿子

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

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

相关文章

有人去瑞幸咖啡java_瑞幸股价暴跌,门店竟然爆单了

本文首发于“全天候科技”作者姚心璐。欢迎下载“见闻VIP”,即时见证历史。昨晚至今,有人被瑞幸疯狂打了1.8折,有人疯狂用1.8折券买入瑞幸咖啡。是不是看上去很迷?这的确是冰火两重天一样的真实存在。4月2日,瑞幸自曝2…

我的世界java版做船_“不要在云了,船的合成用木铲?”我的世界:Java和基岩版的差异...

“不要在云了,你这个云玩家!”不知道你没有没有因为某些原因被网友说成是MC的云玩家,我就听到过一个很冤枉的故事。一个已经玩了5年之久的基岩版玩家,被一个玩了一年Java版的玩家硬生生说成是一个云玩家,重点不是这&am…

mysql 5.5免安装配置_mysql的参考文档mysql5.5.21免安装版的配置方法

mysql的5.5版本(与5.1版本有所区别)中my.ini文件的内容。在mysql根目录里新建my.ini文件,用阅读器打开(加入如下内容)[client]#password your_passwordport 3306socket /tmp/mysql.sockdefault-character-setutf8[mysqld]port 3306socket /tmp/mysql.sockskip-…

appium java 点击事件_java – 无法使用Appium在Android中的权限对话框中单击“允许”按钮...

我无法使用AppiumJava在Android的权限对话框中点击“拒绝”或“允许”按钮.在点击这些按钮之前,是否需要添加任何功能?以下是代码:DesiredCapabilities capabilities new DesiredCapabilities();capabilities.setCapability("platformName", …

java线程interu_Intel 10nm服务器U首曝:多线程性能提升118%

Intel 10nm Ice Lake已经应用在轻薄本平台上,当时频率先天不足,而且只能做到4核心,不得不同时祭出14nm Comet Lake予以辅助,而在游戏本、桌面上也不得不继续依赖14nm Comet Lake。根据路线图,服务器平台上Intel今年会先…

java面板换一个斜的圆形_java – 如何从底部设计圆形视图?

我想设计一个从底部是圆形的视图,请看图像I have try different way to design, Like XML, Programatically but I am not able to get any success. I use XML code it’s doing circle from bottom but when I use Any image or Banner slider as show in figure then it’s …

K8S学习指南(38)-k8s权限管理对象 Group

文章目录 引言Group基本概念1. Group是什么?2. Group的作用3. 与用户的关系 Group的创建方式1. 手动创建Group2. 用户创建Group Group示例演示步骤一:创建Group步骤二:创建Role和RoleBinding步骤三:验证Group权限 结论 引言 在Ku…

java异常标记_java异常机制

------------------------------------------------------------------下面是一些java异常集-------------------------------------------------------------------------------------------算术异常类:ArithmeticExecption空指针异常类:NullPointerExc…

JAVA物体运动检测_基于OpenCv的运动物体检测算法

#include #include #include #include int main( int argc, char** argv )//声明IplImage指针IplImage* pFrame NULL;IplImage* pFrImg NULL;IplImage* pBkImg NULL;CvMat* pFrameMat NULL;CvMat* pFrMat NULL;CvMat* pBkMat NULL;CvCapture* pCapture NULL;int nFrmNum…

oracle删除多条从js到java_一次oracle大量数据删除经历

oracle有个数据表现在已经有2500万条数据了,软件用到这个表的数据时就变的特别慢,所以准备把一个月以前的数据全部清除。我的步骤是(下边操作都是在plsql中运行的)1、首先 将这个月的数据导出到一个临时表中(这些数据是自己希望保留的)create table temp…

polymorphism java_Java基础-面向对象第三大特性之多态(polymorphism)

Java基础-面向对象第三大特性之多态(polymorphism)作者:尹正杰版权声明:原创作品,谢绝转载!否则将追究法律责任。一.多态概述多态是继封装,继承之后,面向对象的第三大特性,多态的前提是继承。从…

java如何把png转换成jpg_Java实现将png格式图片转换成jpg格式图片的方法【测试可用】...

Java实现将png格式图片转换成jpg格式图片的方法【测试可用】发布于 2020-4-9|复制链接摘记: 本文实例讲述了Java实现将png格式图片转换成jpg格式图片的方法。分享给大家供大家参考,具体如下:javaimport java.awt.Color;import java.awt.image.BufferedIm…

php反序列化漏洞 freebuf,最全的PHP反序列化漏洞的理解和应用

原创:f1r3K0php反序列化漏洞,又叫php对象注入漏洞,是一种常见的漏洞,在我们进行代码审计以及CTF中经常能够遇到。01学习前最好提前掌握的知识PHP类与对象(https://www.php.net/manual/zh/language.oop5.php)PHP魔术方法(https://s…

php按数字分页类,PHP简单实现数字分页功能示例

本文实例讲述了PHP简单实现数字分页功能。分享给大家供大家参考&#xff0c;具体如下&#xff1a;header ( Content-Type: text/html; charsetutf-8 );//分页$page$_GET[page];$allcount 100;$page_size 10;$page_show 5;$page_count ceil($allcount/$page_size);if($page <…

php 瀑布流布局,CSS3实现瀑布流布局的方法

这次给大家带来CSS3实现瀑布流布局的方法&#xff0c;CSS3实现瀑布流布局的注意事项有哪些&#xff0c;下面就是实战案例&#xff0c;一起来看一下。以前使用瀑布流都要用js&#xff0c;现在有了css3&#xff0c;可以轻松实现了。掌握点&#xff1a;1、column-count 把p中的文本…

php 文章列表,ThinkPHP初学者:主页,获取一个文章列表

在之前的文章&#xff0c;已经实现了注册登录的功能&#xff0c;主要熟悉TP与HTML、JS交互&#xff0c;数据库的基本操作等。接下来就要登录到主页&#xff0c;熟悉一下列表的处理&#xff0c;以及数据库多表联查操作。为了简化模型&#xff0c;列表的字段仅有文章标题、简介、…

JAVA中数字格式异常,java - Java数字格式异常 - 堆栈内存溢出

当我遇到NumberFormatException时&#xff0c;我正在CodeChef平台上解决问题。首先&#xff0c;我使用Scanner处理输入&#xff0c;然后使用BufferedReader 。 但是他们都不起作用&#xff01;这是我的代码&#xff1a;import java.io.*;import java.util.*;import java.text.*…

java excel 打勾,两种方法教你如何在excel文件中打勾

两种方法教你如何在excel文件中打勾方法一&#xff1a;通过复选框功能打勾本方法是通过Excel文件中的开发工具栏中的功能实现打勾的。有时候如果我们在Excel文件中找不到“开发工具”功能&#xff0c;这时我们可以通过“Excel选项”功能来进行设置。首先我们点击Excel文件左上角…

数字图像matlab心得,Matlab数字图像处理的学习建议

如果是软实力,学好数学才是王道!和机器学习和计算机视觉相关的数学(转载)(以下转自一位MIT牛人的空间文章&#xff0c;写得很实际&#xff1a;)作者&#xff1a;Dahua感觉数学似乎总是不够的。这些日子为了解决research中的一些问题&#xff0c;又在图书馆捧起了数学的教科书。…

php js登录,php+js实现单点登录

phpjs实现单点登录2020年08月14日 00:45:23阅读数&#xff1a;110登录信息表DROP TABLE IF EXISTS fly_admin_login_info;CREATE TABLE fly_admin_login_info (id int(11) unsigned NOT NULL AUTO_INCREMENT,admin_id int(11) unsigned DEFAULT NULL,email varchar(80) DEFAULT…