java重载方法、重写方法

什么是方法

方法就是若干语句的功能集合,方法在c语言等语言中称为函数
方法签名:包含两个方面,方法名和参数列表。
一个类中不可以有两个方法签名完全一样,方法名相同而参数列表不同是可以的。

1.封装一段特定的业务逻辑功能
2.方法尽可能独立,只干一件事
3.方法可以反复的被调用
4.方法可以减少代码的重复,有利于代码的维护

注意事项:
1.方法定义的前后顺序无所谓。
2.方法定义必须是挨着的,方法不能嵌套。
3.方法定义以后,不会自己执行;如果需要执行,一定要进行方法的调用。
4.返回值类型要相同。

方法的重载(Overload)

方法名称相同但是参数列表不同(在一个方法功能类似的时候用到)编译器会根据签名,自动绑定调用不同的方法。

与重载相关

1.参数个数不同步
2.参数类型不同
3.参数的多类型顺序不同

与重载无关

1.与参数的名称无关(两个方法名字相同,但是形参名字不同,是错误的写法)
2.与方法的返回值类型无关(两个方法名字,形参名字相同,返回值不同,是错误的写法;因为单独调用的时候用不到返回值,编译器就区分不开了)。

println就是一个例子,println可以输出各种类型,就是因为用到了重载。

方法的重写(Override)

当父类的方法 满足不了子类的需求时就用到了重写,子类通过重写父类的方法,可以用自身的行为替换父类的行为。方法的重写是实现多态的必要条件。

1.重写发生在父子类中。方法名称、参数列表都相同,不同的是方法体。

2.父类的引用可以调用子类重写父类的方法。

例如:Student s = new Student();

      Person p = new Student();//向上造型,父类的引用指向子类的对象。

若被重写的方法为sayHi(),则此时s.sayHi( )和p.sayHi( )调用的都是Student这个子类中重写的sayHi方法。

重写的条件:遵循“两同两小一大”原则

两同:方法名称相同、方法参数列表相同。

两小:1.子类重写方法时的返回值类型小于或等于父类的方法。//当父类返回值类型为基本类型或void时子类的返回值必须相等因为返

   回值的类型需要有继承关系才去考虑大小这个概念,类型不同肯定不是方法重写。引用类型时看子类返回值类型,是否是父类返

      回值类型的子类。父类被认为是“大”的。

    2.子类方法声明抛出的异常类应比父类方法声明抛出的异常类更小或相等。换句话说,重写方法一定不能抛出新的检查异常,或

     者比被重写方法声明更加宽泛的检查型异常。

一大:子类的访问权限因改比父类的访问权限大或相等。

重写和重载的区别

1.方法的重载和重写都是实现多态的方式,区别在于前者实现的是编译时的多态性,而后者实现的是运行时的多态性

2.重载发生在一个类中,同名的方法如果有不同的参数列表(参数类型不同、参数个数不同或者二者都不同)则视为重载;

重写发生在子类与父类之间,重写要求遵循“两同两小一大原则”,即子类被重写方法与父类被重写方法有相同的参数列表,相同的函数名,有兼容的返回类型,比父类被重写方法更好访问,不能比父类被重写方法声明更多的异常(里氏代换原则)。重载对返回类型没有特殊的要求,不能根据返回类型进行区分。

 

原文地址:https://www.cnblogs.com/zqf-bczl/p/13375730.html