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)注意
只有參數不同才能構成重載,"可見度",傳回型別不同都不能構成方法的重載
重載不是:
重新寫(載)
重載是:
多重(可能)載入