Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 方法重写和方法隐藏之间有什么区别?_Java_Static_Overriding - Fatal编程技术网

Java 方法重写和方法隐藏之间有什么区别?

Java 方法重写和方法隐藏之间有什么区别?,java,static,overriding,Java,Static,Overriding,我了解到方法重写是在非静态方法中完成的,而方法隐藏是在静态方法中完成的。那么,如果在方法中重写子类的方法是重写父类方法,从而只执行子类的方法,那么它们之间的区别是什么呢 在方法隐藏中,发生了同样的事情,子类方法隐藏父类方法,因此只有子类方法在执行 在代码中,我下面提供的两个程序的输出是相同的,那么重写和隐藏之间的区别是什么 通过前面提到的代码@SMA可以看出差异: publicstaticfinalvoidmain(字符串…字符串){ 最终子对象=新的MainClass.Child(); ob

我了解到方法重写是在非静态方法中完成的,而方法隐藏是在静态方法中完成的。那么,如果在方法中重写子类的方法是重写父类方法,从而只执行子类的方法,那么它们之间的区别是什么呢

在方法隐藏中,发生了同样的事情,子类方法隐藏父类方法,因此只有子类方法在执行

在代码中,我下面提供的两个程序的输出是相同的,那么重写和隐藏之间的区别是什么


通过前面提到的代码@SMA可以看出差异:

publicstaticfinalvoidmain(字符串…字符串){
最终子对象=新的MainClass.Child();
obj.f1();
最终父母p=obj;
p、 f1();
}
将导致:
儿童班
儿童班

而静态替代方案将导致:
儿童班
父类

因此,在重写情况下,父方法只能再从重写方法调用。而在静态情况下,隐藏方法仍然存在,并且在使用相应的上下文(因此父类)时将调用该方法。

(我知道通过类的实例调用静态方法不是一个好的做法,但它有助于说明这个问题的答案。)

尝试使用和不使用关键字static,让我们知道您看到了什么
parent p=new child();p、 f1();child c=新的child();c、 f1();父项p1=新父项();p1.f1()