您的位置:首页 > 编程语言 > Java开发

java重写与重载的区别和注意事项

2007-11-30 16:06 741 查看
QUESTION NO: 3
1. class A {
2. protected int method1(int a, int b) { return 0; }
3. }
Which two are valid in a class that extends class A? (Choose two)
A. public int method1(int a, int b) { return 0; }
B. private int method1(int a, int b) { return 0; }
C. private int method1(int a, long b) { return 0; }
D. public short method1(int a, int b) { return 0; }
E. static protected int method1(int a, int b) { return 0; }

310-035中的题目,标准答案是A,C

A不是重载,A是重写!也就是覆盖!
覆盖不能降低原方法的"可见度"

class A {
protected int method1(int a, int b) { return 0; }
}

class B extends A {
public int method1(int a, int b) { return 0; }
}

那么B中只有一个method1(int,int)方法!

--------------------------------------------
重载是:
当多个方法具有相同的名字而含有不同的参数时产生
那么对参数不同的调用,实际调用不同的方法
也可以理解为实际上有两个方法,名字同,参数不同!

class A {
protected int method1(int a, int b) { return 0; }
}

class B extends A {
private int method1(int a, long b) { return 0; }
}
那么B有method1(int,int)和method1(int,long)两个方法!

因为"是"两个方法,所以其实
class B extends A {
PUBLIC int method1(int a, long b) { return 0; }
}
也是正确的

-------------------------------------------------------------------------

-------------

注意事项:

覆盖(不知道是不是OVERWRITE)注意
不能降低原方法的"可见度"

重载(不只道是不是OVERLOAD)注意
只有参数不同才能构成重载,"可见度",返回类型不同都不能构成方法的重载

重载不是:
重新写(载)

重载是:
多重(可能)载入
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java class c