zoukankan      html  css  js  c++  java
  • 【重载与重写】

    重载:同一个类中有一些方法,其方法名相同,但是参数个数,参数类型不同

    重载规则:

    • 被重载的方法必须改变参数列表(参数个数或类型不一样);
    • 被重载的方法可以改变返回类型;
    • 被重载的方法可以改变访问修饰符;
    • 被重载的方法可以声明新的或更广的检查异常;
    • 方法能够在同一个类中或者在一个子类中被重载。
    • 无法以返回值类型作为重载函数的区分标准。

    和重写的主要区别:重载范围是一个类内,重写存在于是父子类关系之中

     

    重写(override):重写需要类与类有继承关系,比如A extends B,而且是针对非静态的方法

    我们都知道,子类可以继承父类的属性,方法(注意私有类型除外),倘若我们想在父类方法基础上做一些修改,添加,那就叫重写,字面意思,子类可以对父类的方法进行修改(重写后如果还想用父类的原方法就需要super关键字,

    举例:(注意都在一个包下)

    父类Animal

    public class Animal {
    
    
        public void run(){
            System.out.println("动物都会跑");
        }
    
    
    }

    子类Cat

    public class Cat extends Animal {
    
        public void run(){
            super.run();//自己重写父类方法后还想再调用父类的那个方法就用super关键字
            System.out.println("猫会跑");
            System.out.println("猫跑起来静悄悄");
        }
    
    }

    测试类

    public class demo4 {
        public static void main(String[] args) {
    //重写后都是输出子类方法
            Cat cat = new Cat();
    
            Animal animal = new Cat();//向上转型
    
            animal.run();
    
    
        }
    }

    输出结果:

    动物都会跑
    猫会跑
    猫跑起来静悄悄

    如果不用super调用 ,那就只会输出后两句:

    猫会跑
    猫跑起来静悄悄

    总结:方法的重写(Overriding)和重载(Overloading)是java多态性的不同表现,重写是父类与子类之间多态性的一种表现,重载可以理解成多态的具体表现形式。

     

  • 相关阅读:
    【Matlab】去除图片周围空白区域(plot subplot)
    使用nbdev进行jupyter项目的开发
    如何绘制符合打印标准的图形
    如何使用Python完成视频的快速剪辑
    如何查看和修改论文图片的打印尺寸
    使用TMUX替代screen工具
    Emacs设置包管理器以及镜像
    Emacs的配置文件
    Emacs Windows的设置
    数据科学新的工具Julia
  • 原文地址:https://www.cnblogs.com/dabuliu/p/14436741.html
Copyright © 2011-2022 走看看