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

JSDoc中实现抽象方法的子类的重复文档?

JSDoc是一种用于JavaScript代码文档化的标记语言,它可以帮助开发人员生成清晰、易读的文档。在JSDoc中,可以使用@abstract标记来定义一个抽象类或方法,表示该类或方法只是一个抽象的概念,需要在子类中进行具体实现。

当子类实现了抽象方法时,我们可以使用JSDoc来为子类的实现提供文档。为了避免重复编写文档,可以使用@inheritdoc标记来继承父类的文档。@inheritdoc标记可以放在子类的文档注释中,后面跟着父类的方法名,表示子类的文档应该继承自父类的相应方法。

下面是一个示例:

代码语言:txt
复制
/**
 * @abstract
 * @class
 */
class AbstractClass {
  /**
   * @abstract
   */
  abstractMethod() {
    // 抽象方法的实现
  }
}

/**
 * @class
 * @extends AbstractClass
 */
class ConcreteClass extends AbstractClass {
  /**
   * @inheritdoc
   */
  abstractMethod() {
    // 子类对抽象方法的具体实现
  }
}

在上面的示例中,AbstractClass是一个抽象类,其中包含一个抽象方法abstractMethodConcreteClassAbstractClass的子类,它实现了abstractMethod方法。在ConcreteClass的文档注释中,使用@inheritdoc标记继承了AbstractClassabstractMethod方法的文档。

这样做的好处是,当我们查看ConcreteClass的文档时,可以直接看到abstractMethod方法的文档,而无需重复编写。

关于JSDoc的更多信息和用法,可以参考腾讯云的文档:JSDoc 使用指南

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

相关·内容

Python协议 、鸭子类型 、 抽象基类 、混入类

本篇文章探讨一下python几个概念:协议 、鸭子类型 、 抽象基类 、混入类。 一、协议 在python,协议是一个或一组方法。...二、鸭子类型(duck typing) 多态一种形式,在这种形式,对象类型无关紧要,只要实现了特定协议即可。...三、抽象基类 抽象基类就是定义各种方法而不做具体实现类,任何继承自抽象基类类必须实现这些方法,否则无法实例化。 那么抽象基类这样实现目的是什么呢? 假设我们在写一个关于动物代码。...示例2定义了一个抽象基类 Animal,它包含两个抽象方法eat和voice,Dog和Bird都继承了Animal,并各自实现了具体eat和voice方法。...抽象方法使用 @abstractmethod 装饰器标记,而且定义体通常只有文档字符串。

1.8K20

创建子类对象时,父类构造函数调用被子类重写方法为什么调用子类方法

static void main(String[] args) { A a = new A(); B b = new B(); } } 问题:为什么创建A对象时候父类会调用子类方法...但是:创建B对象父类会调用父类方法? 答案: 当子类被加载到内存方法区后,会继续加载父类到内存。...如果,子类重写了父类方法子类方法引用会指向子类方法,否则子类方法引用会指向父类方法引用。 如果子类重载了父类方法,则子类重载方法引用还指向子类方法。...如果子类方法没有重写也没有重载父类方法,则方法引用会指向父类方法。 当子类对象创建时,会先行调用父类构造方法(构造方法也是方法),虚拟机会在子类方法区寻找该方法并运行。...其结果是当编译时候,父类构造方法调用方法参数已经强制转换为符合父类方法参数了。 上边代码在编译前已经转换为下面这个样子了。

6.1K10

详解Java抽象类和抽象方法

如果类某个方法,无法具体给出,它就该是个抽象方法。...抽象方法定义 Java普通方法定义方式是 访问权限 返回类型 方法名(有参数填写参数,没参数为空){ 方法内部代码; } 因为抽象方法我们无法给出具体实现,所以抽象方法定义与普通方法有所不同...定义方式如下: 访问权限 abstract 返回类型 方法名(有参数填写参数,没参数为空); 注意:因为不知如何实现,所以没有大括号了。 抽象方法使用 抽象方法必须声明在抽象。...,调用起来没有任何意义; 抽象可以有构造方法,可供子类创建对象时,初始化父类成员使用 子类构造方法之中,是有默认super()方法,所以需要访问父类构造方法,那么父类构造方法需要存在; 抽象...如果子类不重写所有抽象方法,那么子类还包含抽象方法,还应该是抽象类。

1.8K10

Java静态方法不能被子类重写

参考链接: 可以在Java重载或重写静态方法吗 Java静态方法不能被子类重写 特点:静态方法属于类方法,也属于对象方法,但是静态方法随类存在。...结论:Java静态方法不能被子类重写,实际上,子类静态方法隐藏了父类静态方法,因此父类子类静态方法同时存在,只不过父类通过类名(或对象名)调用是父类静态方法子类通过类名(或对象名)调用子类静态方法...,不支持多态,所以此处调用父类静态方法         f1.doWork();            // 非static(静态)方法调用,支持多态         System.out.println...(final,private 方法也如此) (2)静态方法可通过类名直接调用,也可通过类实例化对象调用,因此Father 实例化对象f1调用是父类(不是子类静态方法。...(3)静态方法绑定时期为代码编译器期,也叫前期绑定。非静态方法属于程序执行期绑定,也就运行期绑定。

2.2K20

Swift 抽象类型和方法

在面向对象编程抽象类型提供了一个基础实现,其他类型可以从中继承,以获得某种共享、共同功能。...一个基于抽象类型方法是使用一个基类,它将作为我们所有模型加载类型共享、统一接口。...因此,如果我们将Loadable还原成一个类,那么我们就能够将我们子类所需要所有对象直接存储在我们基类——不再需要在多种类型重复声明这些属性: class Loadable {...如果我们仔细想想,基于抽象方法唯一真正问题是,我们必须在每个子类需要实现方法中加入fatalError,那么如果我们只为这个特定方法使用一个协议呢?...不过,解决这个问题一个方法是,在我们协议声明实现这些便利API所需要一切,这将使我们能够自行扩展该协议: protocol LoadableProtocol { associatedtype

74420

Swift 抽象类型和方法

在面向对象编程抽象类型提供了一个基础实现,其他类型可以从中继承,以获得某种共享、共同功能。...因此,如果我们将Loadable还原成一个类,那么我们就能够将我们子类所需要所有对象直接存储在我们基类——不再需要在多种类型重复声明这些属性: class Loadable {...如果我们仔细想想,基于抽象方法唯一真正问题是,我们必须在每个子类需要实现方法中加入fatalError,那么如果我们只为这个特定方法使用一个协议呢?...不过,解决这个问题一个方法是,在我们协议声明实现这些便利API所需要一切,这将使我们能够自行扩展该协议: protocol LoadableProtocol { associatedtype...子类化目前可能不像以前那样流行(在其他编程语言中也是如此),但我仍然认为这些技术在我们整个Swift开发工具箱是非常好

78920

C#抽象类与抽象方法作用与实例

如果一个类包含有抽象方法,那么这个类一定要声明为抽象类。同时,抽象方法一定需要在子类重写,让抽象方法成为一个具体实实在在方法。...同时,如果所有动物都必须声明"叫"这样一个方法的话,那么,我们可以在animal类声明一个抽象方法shout(),因为抽象方法是必须在子类重写,所以这就限制了所有继承自animal类都必须重写shout...(默认为public); 6、实现接口子类必须将接口所有成员函数实现; 7、子类实现接口方法时,不需要任何关键字,直接实现即可。...2、在父类定义抽象方法不能实现。 3、抽象类不能实例化(也就是不能new出来)。 4、抽象类与抽象方法需要添加abstract关键字。...5、子类实现父类抽象方法时,需要添加override关键字。 6、如果抽象子类不是抽象类,那么子类必须重写父类抽象所有抽象方法

1.6K10

JavaScript抽象类和虚方法

一:抽象类与虚方法方法是类成员概念,是只做了一个声明而未实现方法,具有虚方法类就称之为抽象类,这些虚方法在派生类才被实现。...但利用JavaScript语言本身性质,可以实现自己抽象类。 二: 在JavaScript实现抽象类 在传统面向对象语言中,抽象方法必须先被声明,但可以在其他方法中被调用。...=(new base()).extend({ oninit:function(){ //实现抽象基类oninit虚方法 //oninit函数实现...但这个虚方法实现并不是在派生类实现,而是创建完一个类后,在prototype定义,例如prototype可以这样写: var class1=Class.create(); class1.prototype...但实际上可以把Class.create()返回类看作所有类共同基类,它在构造函数调用了一个虚方法initialize,所有继承于它类都必须实现这个方法,完成构造函数功能。

4.2K22

重复读取 HttpServletRequest InputStream 方法

在本文中,我们就来讨论一下, 问题 1:为什么InputStream无法重复读取? 问题 2:如何重复读取HttpServletRequestInputStream?...回答第一个问题 对于第一个问题,“为什么InputStream无法重复读取?”,最直接粗暴回答:InputStream就是被设计为无法被重复读取。...我们可以看一下InputStreamread()方法注释: /** * Reads the next byte of data from the input stream....也许上面的解释很抽象,因此我们可以简单将InputStream想象为装水管子,随着水流出,管子水早晚会有流尽一天。...回答第二个问题 既然我们已经知道了InputStream无法被重复读取原因,那么对于第二个问题,“如何重复读取HttpServletRequestInputStream?”,其解决方法就简单了。

2.1K21

重复读取 HttpServletRequest InputStream 方法

在本文中,我们就来讨论一下, 问题 1:为什么InputStream无法重复读取? 问题 2:如何重复读取HttpServletRequestInputStream?...回答第一个问题 对于第一个问题,“为什么InputStream无法重复读取?”,最直接粗暴回答:InputStream就是被设计为无法被重复读取。...我们可以看一下InputStreamread()方法注释: /** * Reads the next byte of data from the input stream....也许上面的解释很抽象,因此我们可以简单将InputStream想象为装水管子,随着水流出,管子水早晚会有流尽一天。...回答第二个问题 既然我们已经知道了InputStream无法被重复读取原因,那么对于第二个问题,“如何重复读取HttpServletRequestInputStream?”,其解决方法就简单了。

1.1K10

java什么叫抽象方法抽象类及他们特点

7.何为抽象方法抽象类?  马 克 -to -win:方法前有个abstract修饰符,就叫抽象方法。类前有个abstract修饰符就是抽象类,完了,简单就好记。...以下是二者要点:马 克 -to -w in : 1)抽象方法没有函数体。有童鞋说,这有什么意义呢?比如下面的例子,当我们不知道现在是什么车时,你让我写驾驶(steer)这个方法,我怎么写呢?...这种场合就需要抽象方法。 2)抽象类(Veh)子类(Lim)只要不是抽象类,马克-to-win:它自己(Lim)或它父类(Car)必须把那个抽象类里抽象方法全部实现掉。...3)抽象类不能被实例化。字面上好理解,抽象东西那么抽象,看不见摸不着,当然不能被实际具体生成了。还是举上面的例子。

59430

NGS测序PCR重复序列判定方法

在NGS数据分析,去除PCR重复序列是一个常见分析步骤,无论是WES/WGSsnp calling,还是chip_seq, ATAC_seq,都需要对原始bam文件进行过滤,去除其中PCR重复序列...在samtools也提供了去除PCR重复命令markdup, 该命令对输入bam文件有以下两点要求 必须是经过samtools fixmate命令处理之后文件 必须是按照比对上染色体坐标位置排序之后文件...BAM文件工具,也提供了markdup命令,其PCR重复判定方法和picard是一致,用法如下 # 第一步,按照coordinate排序bam文件 sambamba sort -o positionsort.bam...input.bam # 第二步,运行markdup命令 sambamba markdup positionsort.bam markdup.bam 除了这三种方法之外,还有很多工具可以去除PCR重复序列...,只不过这3种方法最为常见,其中sambamba操作速度最快,推荐使用。

5.1K21

删除排序链表重复元素方法

链表操作非常常见,也是面试中经常会被问道问题。对于链表重复元素删除,有两个变体,现在总结如下。...2.删除全部重复元素,只保留没有重复元素。 *@description * 给定一个排序链表,删除所有含有重复数字节点,只保留原始链表 没有重复出现 数字。...但是加上了将全部重复数字都去除这个条件之后,难度瞬间增加了不少。你需要考虑两个问题: 如果链表头就是重复数字怎么办 如何移动比较链表,删除元素?...第二,对于如何移动比较问题,此时发现,用一个指针无论如何也无法实现题目的需求了。此时看到了参考文档三指针法。...现在将文章内容发下来: 除了哨兵之外,需要定义一个left和一个right两个指针。 ? ? ? ? ? ? ? ? ? 先用right和right下一个元素比较,如果相等,则left移动。

1K10
领券