当前位置: 代码网 > it编程>编程语言>Java > JAVA覆盖和重写的区别及说明

JAVA覆盖和重写的区别及说明

2025年07月16日 Java 我要评论
java覆盖和重写的区别经常听到两种话1.覆盖=重写。2.静态方法可以覆盖但不能重写吗,这两句话听起来挺矛盾的是不是废话不多说直接上图:package com.wangshili;public cla

java覆盖和重写的区别

经常听到两种话

  • 1.覆盖=重写。
  • 2.静态方法可以覆盖但不能重写吗,这两句话听起来挺矛盾的是不是

废话不多说直接上图:

package com.wangshili;

public class main {
	public static void main(string[] args) {
		father f =new child();//创建子类对象,父类引用
		f.print();//调用父类方法
	    ((child)f).print();//向下转型,调用子类方法
	    while(true);
	}
}
/*
 * 重写有多态,调用方法时看对象
 */
class father{
    public  void print(){
         system.out.println ("这是父类");
     }
}
class child extends father{

	public  void print(){
         system.out.println ("这是子类");
     }
}
package com.wangshili;

public class test {
	public static void main(string[] args) {
		father f =new child();//创建子类对象,父类引用
		f.print();//调用父类方法
	    ((child)f).print();//向下转型,调用子类方法
	    while(true);
	}
}
/*
 * 覆盖没多态,调用方法时看引用类型(静态属于类)
 */
class father{
    public  static void print(){
         system.out.println ("这是父类");
     }
}
class child extends father{
	public  static void print(){
         system.out.println ("这是子类");
     }
}

认真读完上面两份代码

你应该能发现区别了,我总结下:

1.非静态方法,覆盖=重写,有多态

2.静态方法,是不能重写的,比如你添加@overwrite直接就报错了,我们知道静态属于类,通过类名就可以直接调用该方法,所以这里也是一样,只看引用类型,跟创建对象类型无关。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。

(0)

相关文章:

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

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com