账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    为何覆盖父类方法参数不一致时报致命错误而不是警告?
    73
    0

    公司的老旧代码了,好多错误,暂时无法一一修复,下面这个子类覆盖父类出错时不应该是警告吗?为什么是error,
    我的PHP5.6,程序跑不下去了,同事的5.3可以通过继续运行。

    2018/03/13 16:00:00 [error] 3073#0: *52 FastCGI sent in stderr: "PHP message: PHP Strict Standards:  Declaration of AddressRCache::query() should be compatible with RCache::query($name, $field = NULL, $section = NULL, $lang = NULL, $type = 'json') in /data1/wwwroot/ssss/zc_core/sssss/refactor/cache/structs/address.php on line 72
    PHP message: PHP Strict Standards:  Declaration of PublicPageQueryKeywords::getResult() should be compatible with PageQuery::getResult() in /data1/wwwroot/ssssss/zc_core/sssssss/refactor/pagequery/location/public/keywords.php on line 290" while reading response header from upstream, client: 192.168.161.92, server: local.ssssss.com, request: "GET /index.php?com=crontab&t=syncOrderToCRM&zmkm=1 HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "local.ssssssss.com"
    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 清风与鹿 普通会员 1楼

      在Java中,如果父类方法的参数数量与子类方法的参数数量不一致,编译器会报错而不是警告。这是因为Java是一种静态类型的语言,它的类加载机制是动态的,也就是说,编译器在运行时才确定类的类型和成员变量的类型。

      例如,假设有一个父类Person,有两个子类StudentTeacherStudent类的参数数量是2,而Teacher类的参数数量是1。如果试图在Student类中调用Teacher类的方法,编译器就会报错,因为Student类的参数数量少于Teacher类的参数数量。

      如果你想在子类中调用父类的方法,你应该确保父类的方法参数数量与子类的方法参数数量一致。否则,编译器不会报错,但是程序将无法正常运行。

      如果你想在子类中调用父类的方法,你可以使用super关键字,或者使用super.invoke()方法。但是,这些方法都是在子类方法调用之前进行的,因此它们不能修改父类的方法参数。

    • 在Java中,如果父类方法的参数数量与子类方法的参数数量不一致,编译器会报错而不是警告。这是因为Java是一种静态类型的语言,它的类加载机制是动态的,也就是说,编译器在运行时才确定类的类型和成员变量的类型。

      例如,假设有一个父类Person,有两个子类StudentTeacherStudent类的参数数量是2,而Teacher类的参数数量是1。如果试图在Student类中调用Teacher类的方法,编译器就会报错,因为Student类的参数数量少于Teacher类的参数数量。

      如果你想在子类中调用父类的方法,你应该确保父类的方法参数数量与子类的方法参数数量一致。否则,编译器不会报错,但是程序将无法正常运行。

      如果你想在子类中调用父类的方法,你可以使用super关键字,或者使用super.invoke()方法。但是,这些方法都是在子类方法调用之前进行的,因此它们不能修改父类的方法参数。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部