Java中常見問題剖析

1.爲啥Switch 多路選擇的選擇因子(case 後的值 )必須是int 或者是char,float或者String類型的值是不會工做的dom

public class VowelsAndConsonants {
public static void main(String[] args) {
for(int i = 0; i < 100; i++) {
char c = (char)(Math.random() * 26 + 'a');
System.out.print(c + ": ");
switch(c) {
case 'a':
case 'e':
case 'i':
case 'o':
case 'u':
System.out.println("vowel");
break;
case 'y':
case 'w':
System.out.println(
"Sometimes a vowel");
break;
default:
System.out.println("consonant");
}
}
}
}ide

2.重載與重寫繼承

a、override(重寫,覆蓋)
(1)方法名、參數、返回值相同。
(2)子類方法不能縮小父類方法的訪問權限。
(3)子類方法不能拋出比父類方法更多的異常(但子類方法能夠不拋出異常)。
(4)存在於父類和子類之間。
(5)方法被定義爲final不能被重寫。
(6)被覆蓋的方法不能爲private,不然在其子類中只是新定義了一個方法,並無對其進行覆蓋。接口

b、overload(重載,過載)
(1)參數類型、個數、順序至少有一個不相同。it

    爲何不能用返回值過載?class

    由於即便過載的方法有返回值,但實際在方法調用的時候不必定非得接收並處理返回值,因此沒法經過返回值來判斷是調用過的哪一個過載方法。
(2)不能重載只有返回值不一樣的方法名。
(3)針對於一個類而言。
(4)不能經過訪問權限、返回類型、拋出的異常進行重載;
(5)方法的異常類型和數目不會對重載形成影響;權限

c、override應用:
(1)最熟悉的覆蓋就是對接口方法的實現,在接口中通常只是對方法進行了聲明,而咱們在實現時,就須要實現接口聲明的全部方法。
(2)除了這個典型的用法之外,咱們在繼承中也可能會在子類覆蓋父類中的方法。float

d、總結
  override是在不一樣類之間的行爲,overload是在同一個類中的行爲。方法

3.構造器的初始化im

相關文章
相關標籤/搜索