1. 程式人生 > >繼承中方法的覆蓋

繼承中方法的覆蓋

lock bsp 繼承 mage end ont 是個 -1 per

執行下邊的代碼:

class Parent2{
public void Print()
  {
System.out.println("今天是個好日子!!");    
  }
}


class Child2 extends Parent2{
    public void Print()
    {
        //super.Print();
        System.out.println("今天不是個好日子!!");
    }
}
 public class super1 {

    public static void main(String[] args) {
        Child2 a
=new Child2(); a.Print(); } }

輸出結果為:

技術分享

原因分析:在子類中重新聲明一個與父類同名同參數的函數,會使父類的函數被子類的覆蓋,從而不會被輸出出來,

若想調用父類的函數,則必須使用Super來調用。比如;若驗證以下代碼:

class Parent2{
public void Print()
  {
System.out.println("今天是個好日子!!");    
  }
}


class Child2 extends Parent2{
    public void Print()
    {
        super
.Print(); System.out.println("今天不是個好日子!!"); } } public class super1 { public static void main(String[] args) { Child2 a=new Child2(); a.Print(); } }

輸出結果截圖:

技術分享

如此,運用Super便可以是父類被覆蓋的函數顯示出來!!!

另外,Java中方法的覆蓋還有如下的幾條規則:

1)覆蓋方法的允許訪問範圍不能小於原方法。

2)覆蓋方法所拋出的異常不能比原方法更多。

3)聲明為final方法不允許覆蓋。

例如,ObjectgetClass()方法不能覆蓋。

4)不能覆蓋靜態方法。

繼承中方法的覆蓋