色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

java覆蓋和影藏

錢多多1年前6瀏覽0評論

Java中,覆蓋(Override)和隱藏(Hide)是兩個非常重要的概念,也是Java面向對象編程中的基本原理。

覆蓋指的是子類重寫父類中的方法,子類中的同名方法會覆蓋父類中的方法,使其具有與父類中方法同名但是不同實現的特性。

//父類
public class Animal {
public void move(){
System.out.println("動物可以移動");
}
}
//子類
public class Dog extends Animal{
public void move(){
System.out.println("狗可以跑和走");
}
}
public class TestDog{
public static void main(String args[]){
Animal a = new Animal(); // Animal 對象
Animal b = new Dog(); // Dog 對象
a.move();//執行動物可以移動方法
b.move();//執行狗可以跑和走方法
}
}

隱藏指的是子類中定義了與父類中同名但是參數列表不同的方法,此時,即使使用父類對象來調用該方法,也是調用子類中定義的方法,而不是父類中的方法。這種方法與父類中的方法是一個新的方法,不是對父類方法的覆蓋。

//父類
public class Animal{
public void move(){
System.out.println("動物可以移動");
}
}
//子類
public class Dog extends Animal{
public void move(String name){
System.out.println(name+"能夠跑和走");
}
}
public class TestDog{
public static void main(String args[]){
Animal a = new Animal(); // Animal 對象
Animal b = new Dog(); // Dog 對象
a.move();//執行動物可以移動方法
b.move();//編譯錯誤,無法通過編譯,因為move()方法參數不匹配
}
}

在Java中,覆蓋和隱藏的規則如下:

  • 方法覆蓋時,方法名、參數列表必須相同;返回值類型和訪問修飾符可以不同,但是返回值類型必須是子類返回值類型的子類;異常類型必須與超類中方法拋出異常的異常類型一致。
  • 隱藏時,方法名必須相同,參數列表必須不同;訪問修飾符可以增強,但是不能降低;返回類型不同;拋出異常類型必須是被變更為非檢查異常。