首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

重写一个方法会重写父注释吗?

在面向对象编程中,当一个子类重写(Override)父类的方法时,子类方法的注释(Annotation)不会自动继承父类的注释。这是因为注释是一种元数据,它提供了关于程序代码的额外信息,但这些信息并不影响程序的执行逻辑。因此,当子类重写父类的方法时,需要手动添加或更新注释以反映新的方法行为。

基础概念

  • 重写(Override):子类定义了一个与父类中某个方法具有相同名称、参数列表和返回类型的方法。
  • 注释(Annotation):提供了一种将元数据与程序元素关联起来的方式,这些元数据可以在编译时或运行时被读取和使用。

相关优势

  • 清晰性:通过注释可以清楚地了解方法的功能和使用方式。
  • 文档化:自动生成API文档时,注释可以作为重要的信息来源。
  • 运行时检查:某些注释可以在运行时被检查,例如使用@Override注解来确保方法确实重写了父类的方法。

类型与应用场景

  • 标准注释:如@Override用于指示方法重写了父类的方法。
  • 自定义注释:开发者可以根据需要定义自己的注释,用于特定的业务逻辑或框架需求。

示例代码

假设我们有一个父类和一个子类,子类重写了父类的方法:

代码语言:txt
复制
class Parent {
    /**
     * 父类的方法,用于打印"Hello from Parent".
     */
    public void sayHello() {
        System.out.println("Hello from Parent");
    }
}

class Child extends Parent {
    /**
     * 重写父类的方法,用于打印"Hello from Child".
     */
    @Override
    public void sayHello() {
        System.out.println("Hello from Child");
    }
}

在这个例子中,Child类重写了Parent类的sayHello方法,并且提供了新的注释来描述子类中的行为。

遇到的问题及解决方法

如果在重写方法时忘记添加或更新注释,可能会导致以下问题:

  • 维护困难:其他开发者可能不清楚方法的具体用途和行为。
  • 文档不准确:自动生成的API文档可能包含过时的信息。

解决方法

  • 始终更新注释:在重写方法时,确保同时更新注释以反映新的实现。
  • 使用IDE工具:许多集成开发环境(IDE)提供了自动生成或更新注释的功能,可以帮助开发者维护注释的一致性。

通过这种方式,可以确保代码的可读性和可维护性,同时提高团队协作的效率。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

父类静态方法可以重写吗?

重写(Override)作为Java的特性之一,经常被作为面试问题。 比较坑的一个问题是,子类能否重写父类的静态方法? 答案当然是可以的。...但是重写之后会发生什么,是否调用子类静态方法会执行子类的逻辑,这才是坑所在的地方。 重写 回顾一下Override的定义,重写是对父类允许访问的方法的实现逻辑进行重新编写。...从它的特点上来说,重写允许子类对象拥有自己的实现逻辑。从这个角度来说,重写静态方法是不允许的。 重写静态方法会发生什么?...,执行的还是父类的逻辑。...因此即使重写了也没意义。 如果这样说的不够明白,可以回想平时开发中我们经常用的工厂模式,或者面向接口编程。我们经常会用父类来声明一个对象,而对象是在运行时才确定的,这就是运行时重写的意义所在。

1.5K20

什么是java的多态

运行时多态是在父类引用指向子类对象时产生的。一个父类的引用可以指向多种子类对象,那么运行时对于同一个消息应该如何做出响应呢?这就由实际的被引用的对象的类型来决定。 b. 为什么要有重写呢?...难道父类中的方法没有被重写,直接调用子类中存在的方法难道是不行吗?看个例子如下: 上面的例子中,当父类中的getName()被注释掉以后,调用father.getName()方法会出错。...当运行 a2.show(b) 的时候,实际是要调用一个 show(B obj) 的方法,但是 A 中有这样一个方法吗?没有!...在B类中是没有对A中的show方法进行重写,所以当a.show()时调用的是父类中的show方法,父类中show方法调用了show2方法,但是在调用的时候发现show2方法已经被子类重写,因此会调用子类中...可见,当父类引用指向子类对象的时候,对父类中方法的调用都会绑定到子类中重写后的方法上,如果子类没有对方法进行重写,那么会直接调用父类中的方法,相当于是直接调用从父类继承的方法。

55920
  • 【JavaSE专栏59】方法重写的概念及优先级问题,面向对象的多态性机制

    方法重写的目的是在继承关系中,子类可以根据自己的需要对父类的方法进行个性化定制,以实现更灵活和特定的功能,重写方法会在运行时动态决定调用哪个方法,实现了多态性的特性。...下面是一个简单的样例代码来说明方法重写的优先级,请同学们认真学习。...这说明在方法重写中,方法的调用是基于对象的实际类型,而不是变量的类型,所以子类重写的方法会优先调用。 ---- 四、方法重写面试题 什么是方法重写?请举例说明。 方法重写和方法重载有什么区别?...方法重写的规则是什么? 如果父类的方法是 private 的,能够被子类重写吗? 如果子类重写了父类的方法,能够抛出比父类方法声明更宽泛的异常吗? 父类的静态方法能够被子类重写吗?...如果父类的方法是 final 的,能够被子类重写吗? 调用重写方法的时候,到底调用父类的方法还是子类的方法? 能否在父类中调用子类的重写方法? 方法重写和多态之间的关系是什么?

    28650

    java基础(四)

    } 只能继承一个父类 2.子类访问父类成员 访问父类构造方法: 使用super关键字,super代表父类对象,在子类的构造方法中调用,且必须是第一句 super(); super(name); 访问父类属性...不能访问父类的private成员 子类能访问父类的所有资源吗?...重写 构造方法会被重写吗? 不能被继承,因此不能重写。 方法重写的规则? 方法名相同 参数列表相同 返回值类型相同或者是其子类 访问权限不能严于父类 方法重载和方法重写 ?...Object类 Object类是所有类的父类 一个类如果没有使用extends显示的继承另外一个类, 那么这个类就继承自Object类。...内部类 把一个类定义在另一个类的内部称为内部类 package cn.bjsxt.demo;//声明包 class Outer//声明类 { private String info="hello

    39030

    【Java】面向对象的特征之一(下):多态

    不能被final修饰,如果被final修饰,这意味着该父类不能被重写(密封方法) 不能使用静态方法 4.重写与重载的区别 所以方法重载是一个类的多态性表现,而方法重写是子类和父类的一种多态性表现。...于是我们新建一个类,对这个改进的方面进行重写就好了 5.避免在构造方法中调用重写方法 为什么这么说呢?...1.首先我构建了一个父类Animal和子类Dog,在父类和子类写了fun()重写方法并在父类的构造方法中调用了子类和父类的重写方法。实例化后,我得出的结果是父类的被重写方法还是子类对父类的重写方法?...但结果是子类的构造方法 2.既然我都知道了,在父类构造方法中调用子类和父类的重写方法会发生动态绑定,调用的是子类的重写方法,那么我将子类的代码修改成下面的代码 public class Dog extends...1吗? 但结果是0,为什么? 这就考察到了代码块的顺序,我们知道代码块的顺序是先执行父类和子类静态代码块顺序,在父类的实例和构造在子类的实例和构造。

    26010

    大厂面试题典-注解可以继承吗,show me code?

    你也许认为类继承后,类的注解也可继承,子类重写父类方法后,父类方法上的注解也能作用于子类,确定吗? 1 案例 自定义注解 ?...子类Child继承Parent父类,并重写父类的foo方法,子类的foo方法和类上都没有@MyAnnotation注解。 ?...子类可以获得父类类上的注解;子类的foo虽是重写父类方法,并且注解本身也支持继承,但还是无法获得方法上的注解。 因为@Inherited只能实现类上的注解继承。...Find 语义 更加详尽,提供了获取语义以及对以下内容的支持: 搜索接口(如果带注释的元素是类) 搜索超类(如果带注释的元素是一个类) 解析桥接方法(如果带注释的元素是方法) 如果带注解的元素是方法,则在接口中搜索方法...4 Spring的@Service、@Controller会支持继承吗?

    3.6K20

    Java的学习笔记(11)对象 六

    对象11:方法重写 重写:需要有继承关系,子类重写父类的方法!...,子类的方法和父类的方法一致;方法体不同 为什么需要重写 父类的功能,子类不一定需要或者不一定满足!...,注解:有功能的注释 public void test() { //super.test(); System.out.println("A=》test"); } } 对象12:多态 动态编译...,可扩展性变得更强 多态,即同一方法根据发送对象的不同而采用不同的行为方式 一个对象的实际类型是确定的,但可以指向对象的引用类型很多(父类,有关系的类) 多态的存在条件 有继承关系 子类重写父类方法 父类引用指向子类的对象...类型转换异常 存在条件:继承关系,方法需要重写,父类引用指向子类对象!

    18520

    【Java核心面试宝典】Day8、面向对象常见面试题汇总(三)

    调用父类的构造方法,使用 super() 或 super(参数),该语句必须是子类构造方法的第一个语句,且这是调用父类构造方法的唯一方式。 调用父类的方法,使用 super.方法名(参数)。...构造一个类的实例时,会沿着继承链调用所有父类的构造方法,父类的构造方法在子类的构造方法之前调用,即构造方法的调用顺序是从父类到子类的。...重载是指一个类中定义多个方法,这些方法有相同的名称,但是方法的签名不同; 重写是指在子类中定义一个方法,该方法与父类中的该方法的签名相同,返回值类型相同或者子类返回值是父类方法返回值的子类。...重载 重写 场合 同一个类 父类和子类 方法名称 相同 相同 方法签名 不同 相同 返回值类型 可以不同 相同或者子类返回值类型是父类返回值类型的子类 7、可见性修饰符protected表示可以从哪里访问类成员...protected void finalize() throws Throwable finalize方法用于垃圾回收,如果一个对象不能再被访问,就变成了垃圾,finalize 方法会被该对象的垃圾回收程序调用

    38110

    java面试题汇总一(会持续更新)

    方法重写时,子类的返回值必须与父类的一致。如果父类方法抛出一个异常,子类重写的方法抛出的异常类型不能小于父类抛出的异常类型。 51.构造方法能不能重载?能不能重写?...可以重载,必须重写 52.如果父类只有有参构造方法,那么子类必须要重写父类的构造方法吗? 必须重写 53.创建一个子类对象的时候,那么父类的构造方法会执行吗? 会执行。...当创建一个子类对象,调用子类构造方法的时候,子类构造方法会默认调用父类的构造方法。 54.什么是父类引用指向子类对象? 是java多态一种特殊的表现形式。...创建父类引用,让该引用指向一个子类的对象 55.当父类引用指向子类对象的时候,子类重写了父类方法和属性,那么当访问属性的时候,访问是谁的属性?调用方法时,调用的是谁的方法?...98.重载与重写 Overload为重载,Override为重写方法的重写和重载是Java多态性的不同表现。重写是父类与子类之间多态性的一种表现,重载是一个类中多态性的一种表现。

    47700

    (18) 为什么说继承是把双刃剑 计算机程序的思维逻辑

    继承是把双刃剑 通过前面几节,我们应该对继承有了一个比较好的理解,但之前我们说继承其实是把双刃剑,为什么这么说呢?一方面是因为继承是非常强大的,另一方面是因为继承的破坏力也是很强的。...给父类增加属性和行为,就可以自动给所有子类增加属性和行为 继承被广泛应用于各种Java API、框架和类库之中,一方面它们内部大量使用继承,另一方面,它们设计了良好的框架结构,提供了大量基类和基础公共代码...子类的addAll方法首先调用了父类的addAll方法,而父类的addAll方法通过add方法添加,由于动态绑定,子类的add方法会执行,子类的add也会做汇总操作。...比如说,绝大部分鸟都会飞,可能就想给鸟类增加一个方法fly()表示飞,但有一些鸟就不会飞,比如说企鹅。 在"is-a"关系中,重写方法时,子类不应该改变父类预期的行为,但是,这是没有办法约束的。...给类加final修饰符,父类就保留了随意修改这个类实现的自由,使用者也可以放心的使用它,而不用担心一个父类引用的变量,实际指向的却是一个完全不符合预期行为的子类对象。

    1.2K60

    python之面向对象中的多态

    说明:SonDog继承了Dog,并重写了play方法 。在Person类中,game方法需要传入一个Dog的实例。 假设我们传给game的不是Dog类,而是其子类,那么效果又是怎么样的呢?...之前也说过了,可以这么理解:Dog sonWc = new SonDog("旺财儿子"),这不就是父类的引用指向子类的对象了么。子类重写了父类的play方法,在调用时,会调用子类的play方法。...那么,假设父类中有而子类没有,子类中有而父类中没有的方法会怎么样呢?...父类就访问不到子类的特有的方法。 讲这么一个是为了说明什么,多态使得父类可以访问到子类的方法和属性,虽然在python中并不显得那么明显。...总结: 本文通过例子讲述了python中的多态:父类的引用指向子类的对象。 另外,像方法的重写和重载也是多态的一种体现。

    35120

    你是真的了解多态吗?谈谈你对多态的了解以及应用

    那么一个Student对象既可以赋值给一个Student类型的引用,也可以赋值给一个Person类型的引用。 所以根据以上讲述可以得出: 1、最终多态体现为父类引用变量可以指向子类对象。...2、多态的前提是必须有子父类关系或者类实现接口关系,否则无法完成多态。 3、在使用多态后的父类引用变量调用方法时,会调用子类重写后的方法。...”); } } //接口的多态使用 Fu fu = new Zi(); 注意事项 同一个父类的方法会被不同的子类重写。...(); //p2会调用Teacher类中重写的work方法 当变量名指向不同的子类对象时,由于每个子类重写父类方法的内容不同,所以会调用不同的方法。...⊙请问你知道什么是栈吗? ⊙看看你对队列的了解有多少? ⊙面试题68(加深你对栈的理解_让你知道什么是栈) ⊙来测试一下你对数据结构中的栈和队列的了解有多少?

    43220

    【Java 基础】:三大特征之多态

    多态概念 在Java中,多态是面向对象编程中的一个重要概念,它允许不同类型的对象对同一方法进行不同的实现。具体来说,多态性指的是通过父类的引用变量来引用子类的对象,从而实现对不同对象的统一操作。...多态性通常通过一个父类用变量引用子类对象来实现。 方法重写 子类必须重写(Override)父类的方法。...区别点 重写 重载 定义位置 定义在父类和子类之间 定义在同一个类中 方法签名 重写方法具有相同的名称和方法签名 重载方法具有相同的名称,但方法签名(参数类型和个数)不同 继承关系 是在子类中对父类方法的重新定义和实现...当调用对象方法的时候,该方法会和该对象的运行类型绑定 当调用对象属性时,没有动态绑定机制,即哪里声明,哪里使用。...4.2 向下转型 (1)本质:一个已经向上转型的子类对象,将父类引用转为子类引用 (2)特点: 只能强制转换父类的引用,不能强制转换父类的对象 要求父类的引用必须指向的是当前目标类型的对象 当向下转型后

    11010

    Laravel学习记录--laravel模板

    guest //用户没有登录 @endguest 模板引用 @include(模板名)引入子模板 问题引入: 当页面大部分内容都一样,只有其中一小块区域要发生改变时,这时候使用include还能满足需求吗?...这时候可以使用laravel的模板继承,类似于面向对象的思想,子模板继承父模板,同时子模板可对父模板的“方法”进行重写 使用方法: 1. section 父模板中要变化的地方键入 @section(name...) @show 子模板继承 @extends('父模板名') @section('父模板的section_name') 这里键入重写内容 @endsection 下面举个简单例子...')//继承父模板parent @section('con')//重写con区域 子模板修改内容 @endsection 效果图 子模板对父模板的con区域进行了重写,并且没有显示父模板原有的...://不将{内的代码转义} {{-- 注释内容 --}}

    1.9K20

    Java面向对象编程中级

    IDEA 常用快捷键 删除当前行, 默认是 ctrl + Y 自己配置 ctrl + d 复制当前行, 自己配置 ctrl + alt + 向下光标 补全代码 alt + / 添加注释和取消注释 ctrl...A->B->C,当然也需要遵守访问权限的相关规则 super 和this 的比较 方法重写/覆盖(override) 简单的说:方法覆盖(重写)就是子类有一个方法, 和父类的某个方法的名称、返回类型...;//可以吗?...1.当调用对象方法的时候,该方法会和该对象的内存地址/运行类型绑定 2.当调用对象属性时,没有动态绑定机制,哪里声明,哪里使用,找不到再去父类中寻找。...当直接输出一个对象时, toString 方法会被默认的调用, 比如System.out.println(monster) ;// 就会默认调用monster.toString() finalize

    47830

    java基础面试题

    运行时的多态是面向对象最精髓的东西,要实现多态需要做两件事:1方法重写(子类继承父类并重写父类中已有的或抽象的方法)2对象造型(用父类引用子类对象) 2.访问修饰符权限 权限分为:当前类,同包,子类,其他包...5后增加enum,7后增加String. 9.最有效率的方法计算2乘以8 答:2方,右移3相当于除以2的3次方) 补充:我们为编写的类重写hashCode方法时,可能会看到如下所示的代码...重载发生在一个类中,同名的方法如果有不同的参数列表(参数类型不同、参数个数不同或者二者都不同)则视为重载;重写发生在子类与父类之间,重写要求子类被重写方法与父类被重写方法有相同的返回类型,比父类被重写方法更好访问...,不能比父类被重写方法声明更多的异常(里氏代换原则)。...这时候,调用这个覆盖的方法会调用覆盖的成员变量。如果子类只覆盖了成员变量,没有覆盖方法,调用这个方法会调用父类的成员变量,尽管这个成员变量被覆盖了。

    1.1K50

    iOS Category实现原理 (补充)

    iOS Category实现原理 (补充) load 和 initialize load load方法会在程序启动就会调用,当装载类信息的时候就会调用。 调用顺序看一下源代码。...当分类重写initialize方法时会先调用分类的方法。...总结 Category中有load方法吗?load方法是什么时候调用的?load 方法能继承吗? Category中有load方法,load方法在程序启动装载类信息的时候就会调用。...调用子类的load方法之前,会先调用父类的load方法。 load、initialize的区别,以及它们在category重写的时候的调用的次序。...是根据函数地址直接调用,initialize是通过objc_msgSend调用 调用时刻: load是runtime加载类、分类的时候调用(只会调用1次), initialize是类第一次接收到消息的时候调用,每一个类只会

    79150
    领券