zoukankan      html  css  js  c++  java
  • 再来个小记,Java方法重写(Method Overriding)

    方法重写概念

    方法重写(Overriding) ,也叫做“方法覆盖”,其实我觉得叫“方法覆盖”应该更容易理解一些。
    在父类和子类中,都定义了相同的方法(名称相同、参数相同),子类的新方法将覆盖父类中原方法,这一特性称为方法重写(Overriding)。
    菜鸟教程上是这么说的:外壳不变,核心重写!

    要点说明

    1. 父类和子类 (这就说明要在不同的类中
    2. 方法相同 (方法名称相同,参数也要相同,包括参数数量、参数类型都要相同

    举个例子

    父类

    public class Dog{
        public void bark(){
            System.out.println("汪汪汪");
        }
    }
    

    子类

    public class Husky extends Dog{
        public void bark(){
            System.out.println("嗷呜嗷呜");
        }
    }
    

    测试类

    public class OverridingDemo{
        public static void main(String [] args){
            Husky erha = new Husky();
            erha.bark();
        }
    }
    

    输出结果

    嗷呜嗷呜
    

    解释一下:
    首先有个狗狗类Dog,狗狗会叫,所以有个bark()方法。一般小狗都是“汪汪”的叫,所以这边需要输出的是“汪汪”的叫声。
    然后我这边来了个哈士奇类Husky,哈士奇也是狗狗,它也继承狗狗类Dog,对应的,哈士奇也会叫,但是哈士奇是怎么叫的?“嗷呜嗷呜”的叫,所以我们这边要重写一下bark()方法,要让它输出“嗷呜嗷呜”的叫声。
    最后我new了一只哈士奇出来。这条哈士奇的叫声是什么呢?当然是“嗷呜嗷呜”的叫啦,所以最后也是输出“嗷呜嗷呜”了。

    强调几点

    • 父类和子类都必须具有相同的方法名称,相同的返回值类型和相同的参数列表;
    • 声明为 final 和 static 的方法不能被重写;
    • 构造方法不能被重写;
    • 如果不能继承一个类,则不能重写该类的方法;
  • 相关阅读:
    iOS TTF文件改变字体
    iOS CoreAnimation 核心动画
    iOS no visible @interface for 'UIButton' declares the selector errors
    iOS 如何通过CocoaPods添加第三方框架
    iOS AVAudioPlayer播放音乐
    iOS 一些常用代码的总结
    iOS 基础
    qworker 实例
    delphi RTTI 反射技术
    delphi IOUtils单元 处理文件路径相关
  • 原文地址:https://www.cnblogs.com/Subaru/p/14470137.html
Copyright © 2011-2022 走看看