JAVA中的重写和重载你真的懂了吗?
参考学习:https://blog.csdn.net/qunqunstyle99/article/details/81007712#Java__32点我跳转
问题一:什么是重载?
重载的定义:
重载是指Java类中方法名称要相同,参数要顺序不同或者参数类型不同,不考虑修饰符不同,甚至可以抛出异常的同名方法也是方法 的额重载。
//重载
public static void toPrint(String s){
System.out.println(s);
}
//修饰符不同
private static void toPrint(String s , String a){
System.out.println(s + "," + a);
}
//抛出异常
public static void toPrint(Integer a) throws IOException{
System.out.println(a);
}
//返回值不同
public static String toPrint(Double d){
System.out.println(d);
return d.toString();
}
public static final void toPrint(){
System.out.println("");
}
问题二:什么是重写(Override)?
重写(Override)的定义:
1.一般存在于继承,父类跟子类/抽象接口与其实现类
2.方法的参数列表必须与被重写的方法相同。
3.返回数据类型必须与被重写的类型相同。
4.重写方法修饰符与被重写的修饰符相同。
5.处理异常时,重写方法不能主动向上层抛出异常throws,要在重写方法处理异常
(不满足上面任何一小点,都不能称为方法重写)
Father.java
public class Father {
public void toSay(){
System.out.println("我是你粑粑");
}
}
Son.java
public class Son extends Father{
@Override
public void toSay() {
System.out.println("我是儿子");
}
}
Test.java
public class Test {
public static void main(String[] args){
//父类/抽象类 变量名 = new 子类名/实现类()
Father people = new Son();
people.toSay();
}
}
总结
结论:重写(override)和重载都是Java的多态性的不同表现。
重写(override)是(多个类)父类与子类/抽象类与实现类之间体现多态性 ,在运行时起作用
重载是同一个类中体现多态性,在编译时起作用
.