多态:就是允许不同的类的对象对同一个消息做出不同的响应。根据发送对象的不同采用不同的行为方式。
比如演奏钢琴时调用play()函数后返回的消息是piano。
演奏手风琴时调用play()函数后返回的消息是accordion。
这就是多态。
重写是多态中的一个手段,子函数对父函数中public 非static 的 函数进行重写,除了内容代码不同,其他的都是一样,包括返回的类型等。详细见上一篇博客。
重载就是除了参数的个数或者参数的类型不同外,其他都相同的多个方法。
比如:
public int play(){........};
public int play(int x,int y){................};
public int play(String x,int y){................};
以上的三个函数就是属于重载。
另外强调一点:只有返回类型不同不算是重载!只有返回类型不同不算是重载!只有返回类型不同不算是重载!!!
原因:有时候你不需要器返回值,如果你调用了类型不同的重载函数,那么编译器将不知道调用哪一个函数。
例子如下:
public int play(int x,int y){ return x+y;};//返回int型
public void play(int x,int y){ x=x+y; };//返回void型
在函数中只是调用,并没有赋值的话:
public static void main(String[] args){
int a=1;
int b=2;
play(a,b);//编译器不知道将调用哪一个函数了。
}
在main方法中不知道将要调用哪一个play()函数了。