java基础-重写

在上篇java基础-继承后今天我们学习重写!!!

一. 概念

        重写就是在继承(子类继承父类,继承关键字是extends)的前提下子类重写父类的方法说白了就是子类中存在和父类里方法名相同,参数的个数和类型一样,返回值类型也一样的方法就是方法的重写好处是可以对父类中的方法进行扩充因为继承用的是父类的东西,重写则不仅得到父类的东西,同时也加入了自己的东西

二. 应用

        场景:在老式手机中有发短信,玩游戏,来电显示的功能,智能手机则在老式手机的基础上来电显示功能新增了显示号码归属地以及用户头像的功能

        代码如下:

                1. 定义一个父类:

public class TelePhone {
//    发短信
    public void send() {
        System.out.println("发短信。。。。。。");
    }

//    玩游戏
    public void play() {
        System.out.println("玩游戏。。。。。。");
    }

//    来电显示
    public void back() {
        System.out.println("来电显示你的电话号码");
    }
}

                2. 定义一个子类并继承父类:

public class NewPhone extends TelePhone {

    public void back() {
//        System.out.println("来电显示你的电话号码");
        super.back();
        System.out.println("显示头像");
        System.out.println("显示号码归属地");
    }

}

                3. 创建测试类:

public class Test {
    public static void main(String[] args) {

/*      方法的重写:
            1、子父类关系  继承的前提下
            2、子类与父类方法名相同,参数的个数和类型一样,返回值数据类型一样
            3、应用场景
                子类拥有父类相同的功能,并且进一步加强
        
        注意事项:
            1,子类方法覆盖父类方法,必须要保证权限大于等于父类权限。
            2.子类方法覆盖父类方法,返回值类型、函数名和参数列表都要一模一样。*/

        NewPhone phone = new NewPhone();
        phone.send();
        phone.play();
        phone.back();
    }
}

                   4. 运行结果如下:

三. 注意事项:

       1. 子类方法覆盖父类方法,必须要保证权限大于等于父类权限
       2. 子类方法覆盖父类方法,返回值类型、函数名和参数列表都要一模一样

       3. 子类抛出的异常下不能超过父类相应方法抛出的异常(子类异常不能大于父类异常)

       4. 新方法将覆盖原有的方法。 如需父类中原有的方法,可使用super关键字,该关键字引用了当前类的父类

        5. 父类的成员方法只能被它的子类重写

        6. 声明为final的方法不能被重写

        7. 声明为static的方法不能被重写,但是能够被再次声明

        8. 子类和父类在同一个包中,那么子类可以重写父类所有方法,除了声明为private和final的方法

        9. 子类和父类不在同一个包中,那么子类只能够重写父类的声明为public和protected的非final方法

        10. 构造方法不能被重写

        11. 如果不能继承一个方法,则不能重写这个方法
 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 覆盖,又称重写或重载,是面向对象编程中的一种重要概念。它指子对父中已有的方法进行重新定义,使得子中的方法能够覆盖父中的方法,从而实现多态性。 要使用覆盖,需要遵循如下规则: - 方法名、参数列表、返回型必须完全一致 - 方法的访问权限不能比父中的方法更严格 - 方法的异常型不能比父中的方法更广 覆盖有助于提高代码的复用性和可维护性。 ### 回答2: 面向对象编程中最重要的概念之一是覆盖。覆盖发生在两个有继承关系的之间,其中,子覆盖了父中的方法。简单来说,子中的方法与父中的方法具有相同的名称和参数列表。 覆盖主要包括三个方面的内容:方法名称、参数列表以及返回型。在覆盖的过程中,子可以改变任何一个或多个方面的内容,但只要方法的名称和参数列表相同,就可以进行覆盖。 覆盖的主要作用是实现多态性。在面向对象编程中,多态指的是同一个方法或同一个在不同的情况下表现出不同的行为。例如,一个父有一个run方法,这个方法被多个子继承并覆盖,这些子的run方法可以根据不同的需要执行不同的代码,这就是多态性的体现。 需要注意的是,在进行覆盖时,子的方法访问控制符不能低于父的方法访问控制符。例如,如果父的方法是public,那么子的方法也必须是public,不能是private或protected。 覆盖还有一些注意事项。首先,覆盖必须使用@Override注解,这样可以确保方法签名的正确性。其次,在覆盖过程中,可以使用super关键字调用父的方法实现,这个功能非常有用。 最后,需要注意的是,覆盖只适用于非静态方法。静态方法不受覆盖影响,因为静态方法是根据调用,而不是根据对象调用。 总之,覆盖是面向对象编程中非常重要的一个概念。它可以实现多态性,并且可以根据不同的需求调用不同的方法实现。同时,需要注意覆盖的访问控制符、使用@Override注解以及调用父方法的方式。 ### 回答3: Java中的覆盖指的是在子中使用相同的方法名称、参数列表和返回型重新定义父中已经存在的方法,从而达到替代父中方法的效果。 父中的方法被子覆盖后,当调用子对象的该方法时,实际上是优先调用子中的方法,而不是父中的方法。这就是覆盖的作用。 覆盖也可以称作重写,其实质是子继承了父的方法,并重新实现了这些方法,从而强化了子对这些方法的掌控能力,实现了更加灵活的程序设计。 在将一个方法覆盖时,需要注意以下几点: 1.方法名称、参数列表、返回型必须与被覆盖的方法相同,否则无法实现覆盖。 2.子中覆盖的方法不能比父中的方法访问级别更严格,例如:如果父中的方法为public,那么子中被覆盖的方法也必须为public,不能为private或者protected。 3.被覆盖的方法不能为final或者static,因为final的方法不能被重新定义,而static的方法不属于任何对象,不能被继承。 在实际程序设计中,也需要注意覆盖的使用方式。例如,当父中的方法被覆盖时,子中的方法可以根据需要选择是完全重写中的方法,还是在父方法的基础上增加新功能。同时,在使用super关键字调用父中被覆盖的方法时,需要注意调用的方式和位置,避免出现死循环或者错误的调用结果。 总的来说,覆盖是Java中一个重要的特性,它使得程序设计更加灵活,同时也需要程序员在设计时根据实际需要合理使用。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值