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

 更新时间:2025年07月16日 15:12:27   作者:wangshili程序员  
非静态方法的覆盖即重写,具有多态性;静态方法无法被覆盖,但可被重写(仅通过类名调用),二者区别在于绑定时机与引用类型关联性

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直接就报错了,我们知道静态属于类,通过类名就可以直接调用该方法,所以这里也是一样,只看引用类型,跟创建对象类型无关。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • JAVA Iterator接口与增强for循环的实现

    JAVA Iterator接口与增强for循环的实现

    这篇文章主要介绍了JAVA Iterator接口与增强for循环的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11
  • Java缓存框架之Caffeine源码解析

    Java缓存框架之Caffeine源码解析

    这篇文章主要介绍了Java缓存框架之Caffeine源码解析,Caffeine 是一个基于Java 8的高性能本地缓存框架,其结构和 Guava Cache 基本一样,api也一样,基本上很容易就能替换,需要的朋友可以参考下
    2023-11-11
  • Java中字符串中连续相同字符去重方法

    Java中字符串中连续相同字符去重方法

    今天小编就为大家分享一篇Java中字符串中连续相同字符去重方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-07-07
  • SpringBoot 项目添加 MDC 日志链路追踪的执行流程

    SpringBoot 项目添加 MDC 日志链路追踪的执行流程

    日志链路追踪就是将一个标志跨线程进行传递,在一般的小项目中也就是在你新起一个线程的时候,或者使用线程池执行任务的时候会用到,比如追踪一个用户请求的完整执行流程,本文给大家介绍SpringBoot MDC 日志链路追踪的代码,感兴趣的朋友一起看看吧
    2021-06-06
  • Java基础教程之理解Annotation详细介绍

    Java基础教程之理解Annotation详细介绍

    这篇文章主要介绍了Java基础教程之理解Annotation详细介绍的相关资料,需要的朋友可以参考下
    2017-01-01
  • SpringBoot整合RabbitMQ实现延迟队列的示例详解

    SpringBoot整合RabbitMQ实现延迟队列的示例详解

    这篇文章主要为大家详细介绍了SpringBoot如何整合RabbitMQ实现延迟队列,文中的示例代码讲解详细,具有一定的学习价值,感兴趣的可以了解一下
    2023-04-04
  • 详解Java分布式事务的 6 种解决方案

    详解Java分布式事务的 6 种解决方案

    在分布式系统、微服务架构大行其道的今天,服务间互相调用出现失败已经成为常态,本文侧重于其他几项,关于 2PC、3PC 传统事务,网上资料已经非常多了,这里不多做重复,本文通过示例给大家介绍Java分布式事务的 6 种解决方案,一起看看吧
    2021-06-06
  • springboot对接第三方微信授权及获取用户的头像和昵称等等

    springboot对接第三方微信授权及获取用户的头像和昵称等等

    这篇文章主要介绍了springboot对接第三方微信授权及获取用户的头像和昵称等等,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-01-01
  • Spring Boot配置application.yml及根据application.yml选择启动配置的操作方法

    Spring Boot配置application.yml及根据application.yml选择启动配置的操作

    Spring Boot中可以选择applicant.properties 作为配置文件,也可以通过在application.yml中进行配置,让Spring Boot根据你的选择进行加载启动配置文件,本文给大家介绍Spring Boot配置application.yml及根据application.yml选择启动配置的操作方法,感兴趣的朋友一起看看吧
    2023-10-10
  • Springboot任务之异步任务的使用详解

    Springboot任务之异步任务的使用详解

    今天学习了一个新技能SpringBoot实现异步任务,所以特地整理了本篇文章,文中有非常详细的介绍及代码示例,需要的朋友可以参考下
    2021-06-06

最新评论