Java中的重载以及重写
重载以及重写只能发生在方法中,其他的情况没有见过。但不包括以后会突然冒出来一个类或接口的一些什么玩法。这里我们只学习方法的重载以及重写。
1)重载
方法的重载:方法名相同,但是参数列表不同(决定性因素)。
在方法的重载中,只有参数列表是决定性因素,也就是只有参数能够决定方法的重载。
我们在学习Java中,很多时候会用到print()以及println()方法,仿佛这两个方法特别万能,什么都能够输出。其实在这里这两个方法是最典型的重载。
我们在此列出一些所重载的方法,如下:
public void fun(){}
public void fun(int a){}
public void fun(double){}
//当重载方法之间有一种传参方法可以传入两个方法,则这两个方法都会报错,
//具体是:在执行代码时,Java语言不知道执行的是哪一个代码。不定长参数可能会导致这种情况的发生。
public void fun(String str1,String str2){}
public void fun(String... arg,String str){}
//上述中加入主方法调用fun("wang","han"),上述这两个方法都可以调用,所以在编译的过程中就会报错。
public void fun(int a,String str){}
public void fun(String str,int a){}
//参数的顺序以及个数不一样,方法也可以重载
//返回值不能作为方法重载的决定性因素,因为程序都不知道执行的是哪个方法,进不去方法
1)重写
方法的重写:子类重写父类中的方法,当调用重写过的方法时,调用的是子类中的方法。
class A {
public void foo() {
System.out.println("方法!");
}
public void print() {
System.out.println("执行的是父类中的方法!");
}
}
class B extends A {
public void print() {
System.out.println("执行的是子类中的方法");
}
}
public class Main {
public static void main(String args[]) {
B b = new B();
b.foo();
b.print();
}
}
"C:\Program Files\Java\jdk1.8.0_172\bin\java.exe" ...
方法!
执行的是子类中的方法
Process finished with exit code 0
上述代码中,print()方法就发生了方法的重写。在某些述中会出现"方法的覆写",其实覆写就是重写,只是不同的书中写法不同。
而对于父类中有私有方法,子类重写父类中的私有方法。这就上升到另外一个问题:私有的方法或者属性子类能不能被继承?
对此,我们在这里给出结论:子类不能继承父类中的私有属性和方法,但是可以通过继承父类中的方法来调用父类中的私有属性和方法。另外父类方法中的访问控制权限是private,子类重写时发生了访问控制权限扩大public 或 protected,此时这并不是方法的重写。
了解详情,请参考另外一篇博客:私有属性能不能被继承?
https://blog.youkuaiyun.com/wyw15667121424/article/details/103254408
OK!在这里就写完了。如有疑问,请留言私信 me ,本人看到后会及时回复。