java重载和重写的区别

2022-08-04 国际 99阅读
怎样才算是一个方法覆盖:
1 首先要保证方法名、参数类型、参数个数、参数顺序完全一样
2 返回类型也必须要一致
3 子类方法不能缩小父类方法的访问权限比如不能由public变成

private了如果可以的话请看下面一段代码会出现什么问题
4 子类方法不能抛出比父类方法更多的异常,只能够相同,或者是父类

方法抛出的异常类的子类。
因为如果可以的话,就会与Java语言的多态机制发生冲突
5 父类的static方法不能被子类覆盖为非static方法 子类可以定义

static方法覆盖父类的static方法 子类不可以定义static方法覆盖父

类的非static方法
6 子类方法覆盖父类方法的前提是,子类必须能够继承父类的特定方法
7 父类的抽象方法可以被子类通过两种途径覆盖:一是子类实现父类的

抽象方法;二是子类重新声明父类的抽象方法。

所以答案1:methodTwo和methodFour覆盖了父类的方法。分析各个方法:因为methodOne不符合规则5,所以没有覆盖。你的methodTwo我认为应该是public static void 不是你发出来的public void void,所以符合规则5,所以methodTwo覆盖了父类的方法。methodThree方法不符合规则5,所以没有覆盖。methodFour符合规则5,所以覆盖了父类的方法。

答案2:重载是在同一个类中,所以子类没有可能重载父类的任何一个方法。原则是:方法名一样。所以父类的四个方法都没有被子类重载。

问题3:根据原则5,可以看出static对方法覆盖有影响,对重载也没有影响。

第四个问题:是覆盖。因为方法名一样,返回类型一样,参数个数和参数类型一样。重载是在同一个类中,所以不是重载。
第五个问题:因为Object有toString方法,而所有的类都是继承自Object,所以每个类中都有一个toString方法,如果我们在类中再写toString方法,就是重载了。覆盖是在父类和子类中说的,也就是平时所说的方法重写。

对于方法重载来说,关键就是参数的类型、参数的个数、参数的顺序至

少有一项不相同。至于修饰符

(private/protected/public/abstract/final/static),返回类型都

无所谓。
声明:你问我答网所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流。若您的权利被侵害,请联系fangmu6661024@163.com