初次接触java总被Override和Overload这两个词搞得头晕转向,经过我反复使用,归纳出了以下几点:
</pre><p>重写(Override)</p><p> Override翻译过来就是覆盖的意思,也就是说Override覆盖了一个方法,并且重写了此方法,以达到了不同的作用。在以下两个方面常用:</p><p> ①子类继承父类的时候;</p><p> ②对接口方法的实现。一般接口只是对方法进行了声明,而使用该接口时就要对方法进行实现。</p><p> Override的使用规则有以下几方面:</p><p> ①重写方法的参数列表必须与被重写的方法完全相同,如果不相同有可能是重载;</p><p> ②重写方法的返回值必须与被重写的方法完全相同;</p><p> ③重写方法的访问修饰符一定要大于被重写方法的访问修饰符;</p><p> ④重写方法所抛出的异常必须与被重写方法所抛出的异常一致,或者是其子类;</p><p> ⑤静态的方法不能被重写为非静态的方法;</p><p> ⑥被重写的方法不能为private,如果重写,则是在其子类中定义了一个新方法,重写无效。</p><p></p><pre class="java" name="code">package itheima; public class testA { public int getNum() { return (0); } } public class testB extends testA { public int getNum() { return (1); } } public class testOverride { public static void main(String[] args) { testB b = new testB(); testA a = (testA) b; int i = a.getNum(); System.out.println(i); } }
重载(overload)
重载见的很多,常见于一个类的一个方法的多种实现形式,这些方法名称相同但参数不同。
overload使用规则有以下几点:
①不能通过访问权限、返回类型、抛出的异常进行重载;
②重载方法名相同而参数类型是不同的,参数类型可以是不同的参数类型,不同的参数个数,不同的参数顺序;
③如果某一方法在父类中是访问权限是priavte,那么就不能在子类对其进行重载,如果定义的话,也只是定义了一个新方法,重载失效。
package itheima; public class testOverload { public static void main(String[] args) { Overload over = new Overload(); over.test(); over.test(1); } } class Overload { public void test() { System.out.println("Test!"); } public void test(int t) { System.out.println("This is" + t); } }
以上为个人学习一点见解,欢迎指出不足,互相沟通!