zoukankan      html  css  js  c++  java
  • Java中的方法重写 与 final关键字

    以下程序是否存在错误?
    class Base {
    private final void method() {
    System.out.println("In Base...");
    }
    }
    class Sub extends Base {
    public void method() {
    System.out.println("In Sub...");
    }
    }

    答案 正确的。

    使用final关键字可以声明类、成员变量和成员方法,一经声明,便不可继承、不可修改和不能覆盖。

    本例中,基类方法 是private ,他在子类中是不可见的,故子类中的 同名方法 不再是覆盖,相当于一个新的方法名。

    这种情况比较特殊,书上说 如果子类中的一个方法与它超类中的方法有相同的方法名和参数签名,称子类中的方法覆盖(override)超类中的方法。 这种说法是不严密的。

    额外小知识:

    final方法不能被子类覆盖。编译器在调用final方法时会转入内嵌机制(直接将方法主体插入到调用处),大大提高执行效率(50%左右)。API类中的许多方法,如Object类中的getClass方法为final方法。
    说明: final不能用于修饰构造方法。

    阅读全文
    类别:Java 查看评论

  • 相关阅读:
    Scrum会议5
    小组项目alpha发布的评价
    第二阶段冲刺记录三
    第二阶段冲刺记录二
    第13周学习进度
    第二阶段冲刺记录1
    《人月神话》阅读笔记01
    第12周学习进度
    意见汇总
    双人结对,四则运算(三阶段)
  • 原文地址:https://www.cnblogs.com/zwl24/p/2356806.html
Copyright © 2011-2022 走看看