Java中的重写和重载,方法签名,还要this和super

本文详细讲解了Java中的方法重写与重载的概念,包括它们的区别,如重载的两同三不同规则和重写的要求。此外,还介绍了this关键字用于区分类内部成员和super关键字在构造函数中的用法。方法签名的重要性也在此处强调。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Java中的重写和重载,方法签名,还要this和super

this和super的区别

1.this:
  • this()
    • 如果里面没有参数就是调用当前类的无参构造器
    • 如果里面有参数就是调用当前类的有参构造器
    • 这个只能放在调用的第一行,this()和super()不能同时出现在一个调用的方法里面
  • this.
    • this.是用来区分和属性同名的变量的,当没有和属性同名的变量是this.可以默认不写,默认不写是指系统会自动相当于添加this.注意:默认不写的只有this.,super不能,只要要用super.就要写,不用就不用写。
2.super:
  • super.
    - super是用来区分子类和父类有同名变量和方法的

  • super()

    • 如果里面没有就是指调用当前类的父类的无参构造器

    • 如果里面有参数就是指调用当前类的父类的有参构造器

    • 这个只能放在调用的第一行,this()和super()不能同时出现在一个调用的方法里面,如果不写,无参的super()会自动写在方法调用的没有this()的首行,因为当有this()的时候,就是调用了当前类的构造器,那么super()无参构造器就会默认写在this()调用的构造器的首行。

    注意:

    如果当前类有父类,那么当前类在new对象的时候,一定会先调用super()调用父类的构造器,因为没有父类就没有子类。

空指针,可以转换成任意的引用类型,不过像对象,如果是空指针,在获取属性就会报空指针异常

方法的重写和重载的区别

1.重载:

重载有两同三不同,他是在同一个类里面,共用一个方法名,但实现的功能不一样

1.1两同(必须全满足)
  • 方法名相同
  • 在同一个类
1.2三不同(满足一个就行)
  • 参数类型不同
  • 参数个数不同
  • 参数类型(不同的类型)顺序不同
2.重写:

重写是指,父类的方法不满足子类的需求,子类进行方法的重写,这样就不会使用父类的方法,程序是先找本来有没有,

没有然后再找父类。但这个并不是重新写一个方法。有下面的要求

  • 返回类型相同
  • 方法名相同
  • 参数列表(参数类型,个数,顺序)相同
  • 访问权限更低
  • 声明为final的方法不能被重写
  • 声明为static的方法不能被重写,但是能够被再次声明
  • 构造方法不能被重写
  • 子类和父类在同一个包中,那么子类可以重写父类所有除了声明为private和final 的方法
  • 如果不能继承一个方法,则不能重写这个方法(即重写方法是要再继承的父类里面有的)
  • 重写的方法能够抛出任何非强制异常,无论被重写的方法是否抛出异常
  • 重写的方法不能抛出新的强制性异常,或者比被重写方法声明的更广泛的强制性 异常,反之则可以

我们通常用注解@Orrivde来判断重写的方法是否正确。

方法签名

在这里顺便提一下方法签名,方法的签名,确保在一个类中的 唯一性 。方法的签名只看 方法名和形参( 类型 个数 和顺序) ,与修饰符
返回类型 和形参名无关。
在一个类中,方法签名必须要唯一, 和变量相同,在同一个作用域中变量名要唯一
在一个类中,其实方法的调用就是通过方法签名来确定方法的。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值