继承中方法的覆盖

Posted ★若风

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了继承中方法的覆盖相关的知识,希望对你有一定的参考价值。

执行下边的代码:

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)不能覆盖静态方法。

以上是关于继承中方法的覆盖的主要内容,如果未能解决你的问题,请参考以下文章

继承、覆盖和虚函数,避免重复代码

继承中方法的覆盖

覆盖片段中的后退按钮

继承--方法覆盖--多态

19-从零玩转JavaWeb-继承关系与方法覆盖

我可以在继承中只覆盖一种方法吗?