• 【Java】方法重写


    目录

    概述

     方法重写-示例代码

    方法重写注意事项

    示例代码


    概述

    子类中出现了和父类一模一样的方法

    当子类需要父类的功能,而功能主体中,子类有自己独特的内容,就可以通过重写父类中的方法,这样即延续了父类的功能,又定义了自己的特有内容

    @Override

    是一个注解,可以帮我们检查重写方法声明的正确性

     方法重写-示例代码

    Phone.java

    1. package com.面向对象.Demo9;
    2. public class Phone {
    3. /**
    4. * 方法的重写
    5. * @param name 用什么手机拨打电话
    6. */
    7. public void call(String name) {
    8. System.out.println("父类:"+name + ",手机在拨打电话");
    9. }
    10. }

    NewPhone.java

    1. package com.面向对象.Demo9;
    2. public class NewPhone extends Phone {
    3. /**
    4. * 什么是方法重写呢?
    5. * 在父类中定义的方法 子类中 实现了重写
    6. * 父类中和子类中出现了一样的方法声明
    7. * 延续父类的功能,实现扩展
    8. * @param name 用什么手机拨打电话
    9. */
    10. @Override
    11. public void call(String name){
    12. System.out.println("子类: call方法,NewPhone:"+name+" 是可以支持 视频通话");
    13. super.call("xiaomi");
    14. }
    15. /**
    16. * 方法重写-注意事项
    17. * 方法的 方法名称(参数列表)必须与 父类中的保持一致
    18. */
    19. }

    NewPhoneDemo.java

    1. package com.面向对象.Demo9;
    2. public class NewPhoneDemo {
    3. public static void main(String[] args) {
    4. NewPhone newPhone = new NewPhone();
    5. newPhone.call("iPhone"); // 子类: call方法,NewPhone:iPhone 是可以支持 视频通话
    6. //父类:xiaomi,手机在拨打电话
    7. }
    8. }

    方法重写注意事项

    这部分内容属于权限修饰符

    • (子类的方法不能被重写)父类中私有方法,子类不能被继承
    • 子类方法访问权限不能比父类低(public > protected > default > private)

    示例代码

    Parent.java

    1. package com.面向对象.Demo12;
    2. public class Parent {
    3. public void a1(){}
    4. private void a2(){}
    5. public void a4(){}
    6. void a5(){}
    7. protected void a6(){}
    8. }

    Student.java

    1. package com.面向对象.Demo12;
    2. public class Student extends Parent {
    3. /**
    4. * 方法重写的注意事项
    5. * 1.父类中的私有方法 子类是无法重写的。=>父类中私有方法,子类不能被继承
    6. * 2.子类方法访问权限不能比父类低(public > protected > default > private)
    7. */
    8. @Override
    9. public void a1() {}
    10. // @Override // 报错,父类中的私有方法 子类是无法重写的,下面这个方法无法重写父类的a2()
    11. public void a2() {}
    12. // @Override // 报错,父类没有a3()
    13. public void a3() {}
    14. // @Override
    15. // private void a4() {} //报错,∵父类是public (public > protected > default > private)
    16. @Override
    17. public void a5() {}
    18. @Override
    19. protected void a6() {} //访问a6(),只能用public,protected
    20. }

    下一篇文章:权限修饰符

  • 相关阅读:
    JVM的内存区域划分
    【数据结构】Java对象的比较
    【17】基础知识:reduxjs/toolkit
    Nginx 无法正确加载静态文件,静态文件加载404或者为html;Nginx 配置访问指定url路径项目部署;
    latex模板列出所有参考文献并加上超链接(xiaoming et al. 2022; xiaohong et al. 2021)
    Socket.io实时通信的一些杂论
    图像导向滤波
    python多线程(四)
    设计模式-状态模式 golang实现
    【计算机网络】文件传输协议FTP和SFTP
  • 原文地址:https://blog.csdn.net/qq_57268251/article/details/133469951