【Java】重载和重写 (2)

答案是可以的,使用super对父类的方法进行调用。

class Animal{ public void printWhoIAm(){System.out.println("Animal")} } public class Dog extends Animal{ //加上注解@Override可以强制进行重写的检查 防止自己重写错误 @Override public void printWhoIAm(){System.out.println("Dog")} public void print(){ super.printWhoIAm(); printWhoIAm();// this.printWhoIAm(); } public static void main(String args[]){ Dog dog = new Dog(); dog.print(); } } /* output: Animal Dog */

使用this.方法()会先在本类中查找是否存在要调用的方法,如果不存在则查找父类中是否具备此方法。如果有则调用,否则出现编译时错误。

使用super.方法()会明确表示调用父类中的方法,直接去父类寻找要调用的方法。

重载和重写的区别 区别 重载 重写
参数列表   必须改   一定不能改  
返回类型   可以修改   一定不能改  
访问控制权限   可以修改   不能比父类严格  
异常   可以修改   可以减少或删除,一定不能抛出新的或者更广的异常  
发生范围   可以在一个类中也可以在子类中   在子类中  
小结

需要注意的是重载和重写的定义形式。引用菜鸟教程的两句话和一张图结束。

方法重载是一个类中定义了多个方法名相同,而他们的参数的数量不同或数量相同而类型和次序不同,则称为方法的重载(Overloading)。

方法重写是在子类存在方法与父类的方法的名字相同,而且参数的个数与类型一样,返回值也一样的方法,就称为重写(Overriding)

【Java】重载和重写

参考:

[1] Eckel B. Java编程思想(第四版)[M]. 北京: 机械工业出版社, 2007

[2] 菜鸟教程. Java 重写(Override)与重载(Overload) |[EB/OL]. /2019-02-18. https://www.runoob.com/java/java-override-overload.html.

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zzzwff.html