patch 9.0.1885: Vim9: no support for abstract methods

Problem:  Vim9: no support for abstract methods
Solution: Add support for defining abstract methods in an abstract class

closes: #13044
closes: #13046

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Yegappan Lakshmanan <yegappan@yahoo.com>
diff --git a/runtime/doc/tags b/runtime/doc/tags
index ae89329..6c32c96 100644
--- a/runtime/doc/tags
+++ b/runtime/doc/tags
@@ -5850,6 +5850,7 @@
 abbreviations	map.txt	/*abbreviations*
 abel.vim	syntax.txt	/*abel.vim*
 abs()	builtin.txt	/*abs()*
+abstract-method	vim9class.txt	/*abstract-method*
 acos()	builtin.txt	/*acos()*
 active-buffer	windows.txt	/*active-buffer*
 ada#Create_Tags()	ft_ada.txt	/*ada#Create_Tags()*
diff --git a/runtime/doc/vim9class.txt b/runtime/doc/vim9class.txt
index 8a9e37e..20ad4bb 100644
--- a/runtime/doc/vim9class.txt
+++ b/runtime/doc/vim9class.txt
@@ -358,6 +358,16 @@
 An abstract class is defined the same way as a normal class, except that it
 does not have any new() method. *E1359*
 
+						*abstract-method*
+An abstract method can be defined in an abstract class by using the "abstract"
+prefix when defining the function: >
+
+	abstract class Shape
+	   abstract def Draw()
+	endclass
+
+A class extending the abstract class must implement all the abstract methods.
+Class methods in an abstract class can also be abstract methods.
 
 ==============================================================================