什么是重写?重写的作用?

一、什么是重写?

1. 重写(Override)概念

重写是子类对父类的允许访问的方法的实现过程进行重新编写, 返回值和形参都不能改变。即外壳不变,核心重写!

重写的好处在于子类可以根据需要,定义特定于自己的行为。 也就是说子类能够根据需要实现父类的方法。

重写方法不能抛出新的检查异常或者比被重写方法申明更加宽泛的异常。例如: 父类的一个方法申明了一个检查异常 IOException,但是在重写这个方法的时候不能抛出 Exception 异常,因为 Exception 是 IOException 的父类,只能抛出 IOException 的子类异常。

2. 个人理解:

在子类中可以根据需要对从基类中继承来的方法进行重写,重写是对类中方法的扩充,因为继承用的是父类的东西,重写则不仅得到父类的东西,同时也加入了自己的东西

3. 官方理解:

在Java和其他一些高级面向对象的编程语言中,子类可继承父类中的方法,而不需要重新编写相同的方法。但有时子类并不想原封不动地继承父类的方法,而是想作一定的修改,这就需要采用方法的重写。方法重写又称方法覆盖若子类中的方法与父类中的某一方法具有相同的方法名、返回类型和参数表,则新方法将覆盖原有的方法。 如需父类中原有的方法,可使用super关键字,该关键字引用了当前类的父类。

二、方法重写的一些特性:

  • 1.发生方法重写的两个方法返回值、方法名、参数列表必须完全一致(子类重写父类的方法)
  • 2.子类抛出的异常下不能超过父类相应方法抛出的异常(子类异常不能大于父类异常)
  • 3.子类方法的访问级别不能低于父类相应方法的访问级别(子类访问级别不能低于父类访问级别)

根据2,3条可以确定第一条,子类重写父类方法的返回值类型不能大于父类方法的返回值类型,即是说子类方法的返回值必         须和父类方法的返回值相同或是其子类。

  • (1) 父类与子类之间的多态性,对父类的函数进行重新定义。即在子类中定义某方法与其父类有相同的名称和参数。
  • (2)若子类中的方法与父类中的某一方法具有相同的方法名、返回类型和参数表,则新方法将覆盖原有的方法。如需父类中        原有的方法,可使用super关键字,该关键字引用了当前类的父类。

注意:方法重写与方法重载不同,方法的重载是方法的参数个数或种类或顺序不同,方法名相同。

三、重写示例

  •  父类Animal
package com.example.demo.entity;

/**
 * @desc:  父类Animal
 * @author: cao_wencao
 * @date: 2020-11-19 10:07
 */
public class Animal {

    public void move(){
        System.out.println("狗可以跑和走");
    }

}
  • 子类Cat重写父类move()方法
package com.example.demo.entity;

/**
 * @desc:  子类Cat重写Animal的move()方法
 * @author: cao_wencao
 * @date: 2020-11-19 10:11
 */
public class Cat extends Animal{

    public void move(){
        super.move();
        System.out.println("猫可以跳、可以吃小鱼");
    }
}
  • TestAnimal

package com.example.demo.entity;

/**
 * @desc:
 * @author: cao_wencao
 * @date: 2020-11-19 10:13
 */
public class TestAnimal {
    public static void main(String[] args) {
        Animal animal = new Animal(); // Animal 对象
        Animal cat = new Cat(); // Cat 对象

        //animal.move();// 执行 Animal 类的方法

        cat.move();//执行 Cat 类的方法
    }

}

结果如下:

狗可以跑和走
猫可以跳、可以吃小鱼

四、重写的作用?

重写是为了增强类的重用性和复用性,扩展性;

重写是对类中方法的扩充,因为继承用的是父类的东西,重写则不仅得到父类的东西,同时也加入了自己的东西,两全其美。
 

五、关于Java中重写ToString()方法的意义

   https://thinkingcao.blog.csdn.net/article/details/55045958

06-02
重写(override)是指在子类中重新实现(覆盖)从父类继承来的方法。在Java中,子类可以通过重写父类的方法来改变该方法的行为。重写方法的签名(即方法名、参数类型和返回类型)必须与被重写方法的签名相同,否则编译器会报错。 在子类中重写父类的方法时,可以使用super关键字来调用父类的方法。例如,可以在子类中使用super.methodName()来调用父类中的methodName方法。 重写的目的通常是为了改变方法的行为,例如根据子类的特殊需求来实现不同的逻辑,或者提高方法的性能等。 下面是一个简单的重写示例,假设有一个Animal类和一个Cat类,Cat类继承自Animal类,并重写了Animal类的makeSound方法: ```java public class Animal { public void makeSound() { System.out.println("The animal makes a sound."); } } public class Cat extends Animal { @Override public void makeSound() { System.out.println("The cat meows."); } } ``` 在这个例子中,Animal类有一个makeSound方法,输出一个字符串表示动物发出了声音。Cat类继承了Animal类,并重写了makeSound方法,使得猫发出的声音是“meows”,而不是“makes a sound”。 当我们调用Cat类的makeSound方法时,会优先调用Cat类中的方法,而不是Animal类的方法。因此,下面的代码 ```java Animal animal = new Cat(); animal.makeSound(); ``` 输出的结果是: ``` The cat meows. ``` 这说明Cat类中的makeSound方法已经成功地重写了Animal类的makeSound方法,使得猫发出了“meows”的声音。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Thinkingcao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值