首页 > 其他分享 >01_方法的重写

01_方法的重写

时间:2023-07-15 12:56:14浏览次数:28  
标签:01 重写 call 子类 父类 方法 public

一、方法的应用体现

方法的应用体现有2种

  • 重载
    1. 在同一个类中
    2. 方法名相同
    3. 参数列表不相同
    4. 和方法返回值无关
  • 重写
    1. 在父子类中
    2. 方法名相同
    3. 参数列表相同
    4. 方法返回值相同

二、概述

方法的重写就是子类对父类的方法逻辑进行重新编写,当然,这个方法得是子类可访问的实例方法

三、什么时候需要方法重写

当子类需要父类的功能,但父类的该功能不能完全满足自己的需求时,子类可以重写父类中的方法,这样,即沿袭了父类的功能,又定义了子类特有的功能

四、如何快速重写一个方法

声明不变,重新实现,重写时可以定义一个声明一样的方法,对方法体进行重新定义,如下,我有一个手机类,该类定义了一个方法就是打电话

public class Phone{
    public void call(){
        System.out.pringln("通话中");
    }
}

一段时间过后,该方法已经不能完全满足我的需求了,比如,我希望增加视频通话功能,此时,就可以新建一个类(NewPhone),继承自Phone类,对打电话功能(call)进行重写,如下

// NewPhone.java
public class NewPhone extends Phone{
    public void call(){
        System.out.pringln("打开摄像头...");
        // 考虑到代码的复用性,可以使用super调用父类中的方法
        super.call();
    }
}

// Test.java
public class Test{
    public static void main(String[] args){
        newPhone.call();
        // 打开摄像头...
        // 通话中...
    }
}

五、@Override注解

@Override注解是放在重写后的方法上,作为重写是否正确的校验注解,加上该注解后如果重写错误,编译阶段会出现错误提示,建议重写方法都加上@Override注解,代码安全,优雅,使用方式如下

// NewPhone.java
public class NewPhone extends Phone{
    @Override
    public void call(){
        System.out.pringln("打开摄像头...");
        // 考虑到代码的复用性,可以使用super调用父类中的方法
        super.call();
    }
}

六、注意事项

  1. 重写方法的名称和形参列表必须与被重写方法名称和参数列表一致
  2. 私有方法不能被重写
  3. 子类重写父类方法时,子类方法访问权限必须大于或者等于父类方法权限(缺省<protected<public

标签:01,重写,call,子类,父类,方法,public
From: https://www.cnblogs.com/xulinjun/p/17555976.html

相关文章

  • 洛谷 P4931 [MtOI2018] 情侣?给我烧了!(加强版)
    洛谷传送门设\(f_i\)为\(i\)对情侣完全错位的方案数,那么答案为:\[\binom{n}{k}\frac{n!}{(n-k)!}2^kf_{n-k}\]分别代表选择\(k\)对情侣,选择它们的位置,情侣可以换位。\(f_i\)有递推公式:\[f_i=4i(i-1)(f_{i-1}+2(i-1)f_{i-2})\]考虑选出两个人,另外......
  • 01_抽象类
    一、为什么要用抽象类当父类定义一个功能时,每个子类对该功能的具体实现逻辑都不一样,那么父类定义该功能时就可以定义成抽象的方法,这个类就必须是抽象类了抽象类也是类,也能定义类中的5大成分(成员变量、成员方法、构造方法、代码块、内部类),特别需要注意的是,有抽象方法的类,必须是......
  • 【转】Docker入门笔记01:Docker容器技术的发展历程
    原文:https://zhuanlan.zhihu.com/p/304623118最近因为工作需要,要学习一些基本的Docker知识,所以整理了一些docker的入门知识,感兴趣的小白可以看看,一起学习进步。要学习一个新的东西,我的习惯一般是先了解它是什么,它是怎么来的,发展历史是怎样的,用来解决什么问题,有什么优缺点。所以......
  • VS2015 C++代码内存泄漏
    在可能泄漏的文件头部加入下面几行(保证malloc和new的泄漏都可以检测到)#define_CRTDBG_MAP_ALLOC#include<crtdbg.h>#ifdef_DEBUG//重载new运算符#definenewnew(_NORMAL_BLOCK,__FILE__,__LINE__)#endif程序运行起始位置:_CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF|_C......
  • WPF - 001 数据绑定
    数据绑定WPF数据绑定四大要素:绑定源、绑定源属性、绑定目标、绑定目标属性。绑定源可以是:CLR对象ADOXMLDependencyObject绑定目标可以是:DependencyObject能够绑定的属性都是依赖属性,即DependencyProperty,所有DependencyProperty的值都是Object->Denpende......
  • Linux shell 获取脚本文件后面的参数的方法
    原文:https://blog.csdn.net/tcjy1000/article/details/124558257环境Linux主机:Ubuntu20.04.4LTS获取shell脚本参数Linuxshell可以通过$0$1$2等获取shell脚本本身及后面的参数获取路径错误示例:#!/bin/bashecho"--createLinuxrootfsbegin--"echo'$1'rootfs_path......
  • java执行jar maven指定mian 方法
    pom文件:<?xmlversion="1.0"encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven......
  • MURF20100CT-ASEMI快恢复对管MURF20100CT
    编辑:llMURF20100CT-ASEMI快恢复对管MURF20100CT型号:MURF20100CT品牌:ASEMI封装:TO-220F恢复时间:50ns正向电流:20A反向耐压:1000V芯片个数:2引脚数量:3类型:快恢复二极管、快恢复对管特性:对管、插件快恢复二极管浪涌电流:200A正向压降:1.9V封装尺寸:如图工作温度:-50°C~150°C......
  • 什么是 Rxjs Observable subscribe 方法的副作用
    RxJSObservable是一个强大的用于处理异步或多值的工具。它可以被看作一个事件流,开发人员可以监听这个事件流,并在事件发生时执行一些操作。这就是为什么说Observable的subscribe方法有副作用(sideeffects):因为当开发人员订阅(subscribe)一个Observable时,开发人员实际上是在定......
  • 关于 Observable 对象调用 subscribe 方法时不传递任何参数值的用法讨论
    在RxJS中,subscribe方法是用于订阅Observable对象并接收数据的关键方法。通过subscribe方法,我们可以注册观察者(Observer)来处理Observable发出的数据、错误和完成信号。该方法接收三个可选的回调函数作为参数:next、error和complete。下面是subscribe方法的作用和示例......