码迷,mamicode.com
首页 > 其他好文 > 详细

继承中方法的覆盖

时间:2017-11-08 19:43:07      阅读:161      评论:0      收藏:0      [点我收藏+]

标签:stat   image   nal   end   ring   int()   方法   好日子   规则   

执行下边的代码:

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

继承中方法的覆盖

标签:stat   image   nal   end   ring   int()   方法   好日子   规则   

原文地址:http://www.cnblogs.com/ljysy/p/7805281.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!