zoukankan      html  css  js  c++  java
  • 继承中方法的覆盖

    执行下边的代码:

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

  • 相关阅读:
    2017-12-25
    oracle 创建表,增加修改删除字段
    jqxWidgets 常用代码
    Oracle初始化用户-表空间-权限
    Oracle 切换数据库实例
    ORE(Oracle R Enterprise)安装步骤
    Java 枚举类的基本使用
    Java可变参数
    java的封箱和拆箱
    spring 九种设计模式
  • 原文地址:https://www.cnblogs.com/ljysy/p/7805281.html
Copyright © 2011-2022 走看看