Java 面向对象—重载和重写/覆盖(面试)

重载和重写/覆盖:

重载(overload):

        Java重载是发生在本类中的,允许同一个类中,有多个同名方法存在,方法名可以相同,方法参数的个数和类型不同,即要求形参列表不一致。重载的好处,减轻了起名和记名的麻烦,通过个数和类型的不同来区分不同的函数。

        方法的重载只跟方法名和形参列表有关,与修饰符和返回值类型无关。

        形参列表不同:1.顺序不同;2.个数不同;3.类型不同。

基本数据类型传递的是该数据值本身,引用数据类型传递的是对象的引用,而不是对象本身;

重写(override):

        重写的参数列表,返回类型(可以是父子类),访问限定符,一般是不能修改的。

        重写也称覆盖。重写是子类对父类非静态,非private,非final方法的实现过程进行重新编写,返回值(JDK7以后,被重写的方法返回值类型可以不同,但是必须是具有父子关系的)和形参都不能改变。即外壳不变,核心重写。

        重写是动态绑定(面向对象中支持多态的是动态绑定),即在编译时不能确定具体的调用方法,而在程序运行时,才能确定具体的被调用的方法。即:方法重载是一个类的多态性表现,而方法重写是子类与父类的一种多态性表现。

哪些方法可以被重写?哪些方法不可以被重写?

一:只能重写继承过来的方法。

二:final、static 的方法不能被重写。(父类被static、private final修饰的方法不能被重写。)

三:重写的方法必须有相同的参数列表。

四:重写的方法必须返回相同的类型。(子类在重写父类的方法时,一般必须与父类方法原型一致:修饰符 返回值类型 方法名(参数列表) 要完全一致)

五:重写方法不能使用限制等级更严格权限修饰符。(访问权限不能比父类中被重写方法访问权限更低)

六:重写后的方法不能抛出比父类中更高级别的异常。

七:可以在子类中通过 super 关键字来调用父类中被重写的方法。

八:构造方法不能被重写。(因为构造方法很特殊,而且子类的构造方法不能和父类的构造方法同名(类名不同),所以构造方法和重写之间没有任何关系。)

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一些常见的Java面试题及其答案: 1. 什么是Java中的面向对象编程(OOP)?列举OOP的原则。 面向对象编程是一种编程范式,它将数据和操作数据的方法组合成对象。Java是一种面向对象的编程语言,它支持封装、继承和多态等OOP原则。 OOP的原则包括: - 封装:将数据和操作数据的方法封装在一个对象中,通过访问修饰符来控制对数据的访问。 - 继承:通过继承机制,一个类可以继承另一个类的属性和方法。 - 多态:同一种类型的对象,在不同的情况下可以表现出不同的行为。 2. 什么是Java中的重载重写?它们之间有什么区别? 重载(Overloading)是指在同一个类中,可以有多个方法具有相同的名称,但参数列表不同。重载方法可以根据不同的参数类型和个数进行调用。 重写(Overriding)是指子类重新定义了父类中已有的方法。重写方法必须具有相同的名称、参数列表和返回类型。重写方法可以在子类中实现特定的行为。 区别: - 重载是在同一个类中定义多个方法,方法名相同但参数列表不同;重写是子类重新定义父类中已有的方法。 - 重载是编译时多态性,根据参数类型和个数选择调用的方法;重写是运行时多态性,根据对象的实际类型选择调用的方法。 3. Java中的异常处理机制是什么? Java中的异常处理机制通过try-catch语句块来处理异常。在try块中编写可能抛出异常的代码,如果发生异常,会跳转到catch块中执行相应的处理逻辑。 示例代码: ```java try { // 可能抛出异常的代码 } catch (Exception e) { // 异常处理逻辑 } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值