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

java重寫和隱藏的區(qū)別

許立華1年前7瀏覽0評論

Java中的重寫和隱藏是面向?qū)ο笾械膬蓚€重要概念,很多初學(xué)者容易把兩者混淆。下面我們來詳細解析它們之間的區(qū)別。

重寫(Override):

重寫是指在子類中編寫一個與父類中同名、同參數(shù)、同返回值類型的方法,這個子類方法的代碼實現(xiàn)會覆蓋原父類方法的實現(xiàn)。

在重寫時,子類方法的訪問修飾符不能低于父類方法的訪問修飾符。如果父類方法是public,那么子類方法也必須是public,如果父類方法是protected,那么子類方法可以是protected或public,而不能是private。

public class Animal {
public void eat() {
System.out.println("Animal is eating.");
}
}
public class Cat extends Animal {
public void eat() {
System.out.println("Cat is eating.");
}
}
public class Test {
public static void main(String[] args) {
Animal animal = new Cat();
animal.eat();   //輸出結(jié)果:Cat is eating.
}
}

隱藏(Hide):

隱藏是指子類中定義了一個與父類中同名但是參數(shù)列表不同的方法,這個子類方法不會覆蓋父類中的方法,而是在子類中獨立存在。隱藏發(fā)生在同一個類中或者是繼承關(guān)系的子類中。

在隱藏時,子類方法的訪問修飾符可以低于父類方法的訪問修飾符。如果父類方法是public,那么子類方法可以是public、protected或private,如果父類方法是protected,那么子類方法可以是protected或private,而不能是public。

public class Animal {
public void eat() {
System.out.println("Animal is eating.");
}
}
public class Cat extends Animal {
private void eat(String food) {
System.out.println("Cat is eating " + food);
}
}
public class Test {
public static void main(String[] args) {
Cat cat = new Cat();
cat.eat("fish");    //輸出結(jié)果:Cat is eating fish
cat.eat();  //編譯會報錯,因為Cat類中不存在無參的eat方法
}
}

通過上述對重寫和隱藏的分析,我們可以看出,重寫是在子類中對父類方法的重寫實現(xiàn),而隱藏是在子類中定義一個與父類同名但參數(shù)列表不同的方法。