有点混乱,有几个没懂。
1,重写和覆盖有什么区别,为什么覆盖的和被覆盖的方法要一模一样,这样的话什么情况下用覆盖?最好有个例子。
2,重写就是在子类中重新写一个同名的方法吗,然后引用对象不同就输出不一样?
3,重载是不是就是同一个方法名,然后参数类型和数目的不同,应用的时候自动匹配?重载还有其他作用吗?
4,如果重载就那个作用,那对于重写和覆盖我就根本看不出来有区别或者说用于什么地方?
希望帮我解答一下,谢谢。
都要求方法同名。
都可以用于抽象方法和非抽象方法之间。
方法覆盖和方法重载具有以下不同点:
方法覆盖要求参数签名必须一致,而方法重载要求参数签名必须不一致
方法覆盖要求返回类型必须一致,而方法重载对此不做限制。
方法覆盖只能用于子类覆盖父类的方法,方法重载用于同一个类的所有方法(包括从父类中继承而来的方法)。
方法覆盖对方法的访问权限和抛出的异常有特殊的要求,而方法重载在这方面没有任何限制。
父类的一个方法只能被子类覆盖一次,而一个方法在所在的类中可以被重载多次。
重写 ,必须要有继承父类,子类重写父类的方法,称之为重写。。前提条件,需要继承,而且是子类覆盖父类的方法。。方法签名一致
重载,不需要有继承,可以重载任何方法,只需要这两个方法签名不一致即可
方法签名不一致的定义(方法的参数个数不同,类型不同,名称不同),由于重载必须方法名相同,那就是只能参数个数不同,类型不同。而且在同一作用域下,也就是同一个class下面
重写,就是方法签名一致,但是方法分别放在父类中和子类中。