• 重载和重写


    方法重载

    简单来说就是函数或者方法有相同的名称,但是参数列表不相同的情形,这样的同名不同参数的函数或者方法之间,互相称之为重载函数或者重载方法


    方法重载指同一个类中定义的多个方法之间的关系,满足下列条件的多个方法相互构成重载。
    1)多个方法在同一个类中
    2)多个方法具有相同的方法名
    3)多个方法的参数不相同,类型不同或者数量不同

    下面的程序哪个和show()方法重载()?**A、C、D**

    1. class Demo{
    2. void show(int a,int b,float c){}
    3. }
    4. A.void show(int a,float c,int b){} //√ 参数顺序不同
    5. B.void show(int a,int b,float c){} //× 完全一致
    6. C.int show(int a,float c,int b){return a;} //√ 同方法名,参数顺序不同
    7. D.int show(int a,float c){return a //√ 参数不同

    方法重载特点:

    *重载仅对应方法的定义,与方法的调用无关,调用方式参照标准格式
    *重载仅针对同一个类中方法的名称与参数进行识别,与返回值无关,换句话说不能通过返回值来判定两个方法是否相互构成重载

    方法重写


    * 1、方法重写概念

      * 子类出现了和父类中一模一样的方法声明(方法名一样,参数列表也必须一样)

    * 2、方法重写的应用场景

      * 当子类需要父类的功能,而功能主体子类有自己特有内容时,可以重写父类中的方法,这样,即沿袭了父类的功能,又定义了子类特有的内容

    具体实例: 猫和动物

    猫类属于动物类,继承了动物类,具有相同的方法“eat”,并且重写了eat,最后输出的也是重写的“猫吃鱼”

    可以结合http://t.csdn.cn/fqWv6理解

    1. package com.object_02;
    2. public class Animal9 {
    3. public int age = 40;
    4. public void eat() {
    5. System.out.println("动物吃东西");
    6. }
    7. }
    8. package com.object_02;
    9. import com.object_02.Animal9;
    10. public class Cat9 extends Animal9 {
    11. public int age = 20;
    12. public int weight = 10;
    13. @Override
    14. public void eat() {
    15. System.out.println("猫吃鱼");
    16. }
    17. public void playGame() {
    18. System.out.println("猫捉迷藏");
    19. }
    20. }
    21. package com.object_02;
    22. public class AnimalDemo9 {
    23. public static void main(String[] args) {
    24. //有父类引用指向子类对象
    25. Animal9 a = new Cat9();
    26. System.out.println(a.age);
    27. // System.out.println(a.weight);
    28. // 因为成员变量​编译看和运行看父类,父类中没有,所以weight报错
    29. // 运行出的age也是父类的40
    30. a.eat();
    31. // a.playGame();
    32. //因为成员方法编译看父类,父类Animal中只有eat方法,所以playGame方法报错
    33. //因为运行看子类,所以eat方法运行的结果是子类重写后的"猫吃鱼"
    34. }
    35. }

    3、Override注解

     

    * 用来检测当前的方法,是否是重写的方法,起到【校验】的作用 2.7 方法重写的注意事项(掌握)

    * 方法重写的注意事项

    1. 私有方法不能被重写(父类私有成员子类是不能继承的)
    2. 子类方法访问权限不能更低(public > 默认 > 私有)
     

    重载和重写的区别如下(拓展)

    1.定义不同---重载是定义相同的方法名,参数不同;重写是子类重写父类的方法。

    2.范围不同---重载是在一个类中,重写是子类与父类之间的。

    3.多态不同---重载是编译时的多态性,重写是运行时的多态性。

    4.返回不同---重载对返回类型没有要求,而重写要求返回类型,有兼容的返回类型。

    5.参数不同---重载的参数个数、参数类型、参数顺序可以不同,而重写父子方法参数必须相同。

    6.修饰不同---重载对访问修饰没有特殊要求,重写访问修饰符的限制一定要大于被重写方法的访问修饰符。
     

  • 相关阅读:
    什么是 MQ
    使用分页查询(mybatis自带的)selectPage(page,wrapper)时报错
    PHP —— 一份前端开发工程师够用的知识点(框架篇)
    STM32 | 利用STM32CubeMX初始化一个STM32工程,图有点多,因为超详细(以STM32G431RBT6举例)
    【定义】线性方程组
    Java反射获取对象的属性值
    晶振如何产生数字时钟信号
    数据结构与算法【堆】的Java实现
    selenium 自动化测试——环境搭建
    虚函数表和虚函数指针
  • 原文地址:https://blog.csdn.net/clover_oreo/article/details/125464864