diff --git a/help/cbot/E/extends.txt b/help/cbot/E/extends.txt
index e69de29b..a0bedb13 100644
--- a/help/cbot/E/extends.txt
+++ b/help/cbot/E/extends.txt
@@ -0,0 +1,107 @@
+\b;Keyword \c;extends\n;
+This keyword is used in a \c;\l;class\u cbot\class;\n; definition when we want the class to inherit members from another class. The class which is extended we usually call a parent or base, the extending class we call a child.
+
+\t;Example
+\c;
+\s;public class Parent
+\s;{
+\s; void foo()
+\s; {
+\s; message("foo");
+\s; }
+\s;}
+\s;
+\s;public class Child extends Parent
+\s;{
+\s; void bar()
+\s; {
+\s; message("bar");
+\s; }
+\s;}
+\s;
+\s;extern void object::Test()
+\s;{
+\s; Child child();
+\s; child.foo(); // Will show "foo"
+\s; child.bar(); // Will show "bar"
+\s;}
+\n;
+
+\b;Inherited Members
+Only \c;\l;public\u cbot\public;\n; and \c;\l;protected\u cbot\protected;\n; members are inherited. \c;\l;private\u cbot\private;\n; members are directly inaccessible even for a child, although they can be accessed indirectly through inherited methods.
+
+Constructors and destructors are not inherited, however, they can be overriden.
+
+\b;Method Overriding
+Inherited methods can be overriden (redefined) in the child class definition. Example:
+\c;
+\s;public class Parent
+\s;{
+\s; void foo()
+\s; {
+\s; message("foo");
+\s; }
+\s;}
+\s;
+\s;public class Child extends Parent
+\s;{
+\s; void foo()
+\s; {
+\s; message("bar");
+\s; }
+\s;}
+\s;
+\s;extern void object::Test()
+\s;{
+\s; Child child();
+\s; child.foo(); // Will show "bar"
+\s;}
+\n;
+A parent's method can be called inside an overriden method by using the \c;\l;super\u cbot\super;\n; keyword.
+
+\b;Polymorphism
+\c;\l;Reference\u cbot\pointer;\n; of type Parent can point to an object of type Child. However, such a pointer can't be used to access a child member. In order to access a child member, it must be assured that the Parent reference really points to a Child object. If that's the case, it can be safely copied to a pointer of type Child, which has access to the child members.
+
+\t;Example
+\c;
+\s;public class Parent
+\s;{
+\s; void foo()
+\s; {
+\s; message("foo");
+\s; }
+\s;}
+\s;
+\s;public class Child extends Parent
+\s;{
+\s; void foo()
+\s; {
+\s; message("bar");
+\s; }
+\s; void bar()
+\s; {
+\s; message("foo bar");
+\s; }
+\s;}
+\s;
+\s;extern void object::Test()
+\s;{
+\s; Parent people[2];
+\s; people[0] = new Parent();
+\s; people[1] = new Child();
+\s; for (int i = 0; i < 2; ++i)
+\s; {
+\s; people[i].foo();
+\s; }
+\s; //people[1].bar(); // Error
+\s; Child child = people[1];
+\s; child.bar(); // OK
+\s;}
+\n;
+
+\b;Multiple Inheritance
+A child cannot have multiple parents, however, a parent can have many children.
+
+\t;See also
+\c;\l;class\u cbot\class;\n;, \c;\l;public\u cbot\public;\n;, \c;\l;private\u cbot\private;\n;, \c;\l;protected\u cbot\protected;\n;, \c;\l;new\u cbot\new;\n;, \c;\l;reference\u cbot\pointer;\n;, \c;\l;this\u cbot\this;\n;, \c;\l;super\u cbot\super;\n;
+\l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.
diff --git a/help/cbot/po/cbot.pot b/help/cbot/po/cbot.pot
index 4407b4ee..139825f0 100644
--- a/help/cbot/po/cbot.pot
+++ b/help/cbot/po/cbot.pot
@@ -53,7 +53,7 @@ msgid "Time in seconds."
msgstr ""
#. type: \t; header
-#: ../E/abstime.txt:10 ../E/acos.txt:11 ../E/aim.txt:23 ../E/array.txt:41 ../E/asin.txt:11 ../E/atan.txt:11 ../E/atan2.txt:16 ../E/bloc.txt:48 ../E/bool.txt:4 ../E/break.txt:24 ../E/build.txt:27 ../E/buildingenabled.txt:22 ../E/busy.txt:14 ../E/canbuild.txt:22 ../E/canresearch.txt:14 ../E/category.txt:109 ../E/ceil.txt:12 ../E/class.txt:120 ../E/close.txt:6 ../E/cond.txt:4 ../E/continue.txt:24 ../E/cos.txt:11 ../E/deletef.txt:9 ../E/delinfo.txt:13 ../E/destroy.txt:15 ../E/detect.txt:27 ../E/direct.txt:13 ../E/dist.txt:29 ../E/dist2d.txt:13 ../E/do.txt:27 ../E/drop.txt:28 ../E/eof.txt:13 ../E/errmode.txt:32 ../E/expr.txt:197 ../E/extern.txt:29 ../E/factory.txt:21 ../E/false.txt:4 ../E/file.txt:16 ../E/fire.txt:30 ../E/flatgrnd.txt:16 ../E/flatspace.txt:25 ../E/float.txt:24 ../E/floor.txt:12 ../E/for.txt:51 ../E/function.txt:129 ../E/goto.txt:34 ../E/grab.txt:28 ../E/if.txt:39 ../E/int.txt:18 ../E/jet.txt:14 ../E/message.txt:24 ../E/motor.txt:38 ../E/move.txt:21 ../E/nan.txt:14 ../E/new.txt:20 ../E/null.txt:4 ../E/object.txt:79 ../E/open.txt:18 ../E/openfile.txt:10 ../E/pencolor.txt:14 ../E/pendown.txt:17 ../E/penup.txt:11 ../E/penwidth.txt:14 ../E/point.txt:35 ../E/pointer.txt:51 ../E/pow.txt:14 ../E/private.txt:19 ../E/produce.txt:30 ../E/protected.txt:26 ../E/public.txt:49 ../E/radar.txt:80 ../E/radarall.txt:19 ../E/rand.txt:8 ../E/readln.txt:18 ../E/receive.txt:16 ../E/recycle.txt:12 ../E/research.txt:18 ../E/researched.txt:14 ../E/researches.txt:27 ../E/retobj.txt:13 ../E/return.txt:29 ../E/round.txt:12 ../E/search.txt:25 ../E/send.txt:17 ../E/shield.txt:18 ../E/sin.txt:11 ../E/sizeof.txt:21 ../E/sniff.txt:16 ../E/space.txt:22 ../E/sqrt.txt:11 ../E/static.txt:20 ../E/strfind.txt:18 ../E/string.txt:32 ../E/strleft.txt:14 ../E/strlen.txt:12 ../E/strlower.txt:10 ../E/strmid.txt:18 ../E/strright.txt:14 ../E/strupper.txt:10 ../E/strval.txt:17 ../E/super.txt:45 ../E/switch.txt:70 ../E/synchro.txt:23 ../E/takeoff.txt:15 ../E/tan.txt:11 ../E/term.txt:30 ../E/testinfo.txt:16 ../E/this.txt:52 ../E/thump.txt:12 ../E/topo.txt:13 ../E/true.txt:4 ../E/trunc.txt:12 ../E/turn.txt:32 ../E/type.txt:32 ../E/var.txt:66 ../E/void.txt:10 ../E/wait.txt:21 ../E/while.txt:46 ../E/writeln.txt:19
+#: ../E/abstime.txt:10 ../E/acos.txt:11 ../E/aim.txt:23 ../E/array.txt:41 ../E/asin.txt:11 ../E/atan.txt:11 ../E/atan2.txt:16 ../E/bloc.txt:48 ../E/bool.txt:4 ../E/break.txt:24 ../E/build.txt:27 ../E/buildingenabled.txt:22 ../E/busy.txt:14 ../E/canbuild.txt:22 ../E/canresearch.txt:14 ../E/category.txt:109 ../E/ceil.txt:12 ../E/class.txt:120 ../E/close.txt:6 ../E/cond.txt:4 ../E/continue.txt:24 ../E/cos.txt:11 ../E/deletef.txt:9 ../E/delinfo.txt:13 ../E/destroy.txt:15 ../E/detect.txt:27 ../E/direct.txt:13 ../E/dist.txt:29 ../E/dist2d.txt:13 ../E/do.txt:27 ../E/drop.txt:28 ../E/eof.txt:13 ../E/errmode.txt:32 ../E/expr.txt:197 ../E/extends.txt:105 ../E/extern.txt:29 ../E/factory.txt:21 ../E/false.txt:4 ../E/file.txt:16 ../E/fire.txt:30 ../E/flatgrnd.txt:16 ../E/flatspace.txt:25 ../E/float.txt:24 ../E/floor.txt:12 ../E/for.txt:51 ../E/function.txt:129 ../E/goto.txt:34 ../E/grab.txt:28 ../E/if.txt:39 ../E/int.txt:18 ../E/jet.txt:14 ../E/message.txt:24 ../E/motor.txt:38 ../E/move.txt:21 ../E/nan.txt:14 ../E/new.txt:20 ../E/null.txt:4 ../E/object.txt:79 ../E/open.txt:18 ../E/openfile.txt:10 ../E/pencolor.txt:14 ../E/pendown.txt:17 ../E/penup.txt:11 ../E/penwidth.txt:14 ../E/point.txt:35 ../E/pointer.txt:51 ../E/pow.txt:14 ../E/private.txt:19 ../E/produce.txt:30 ../E/protected.txt:26 ../E/public.txt:49 ../E/radar.txt:80 ../E/radarall.txt:19 ../E/rand.txt:8 ../E/readln.txt:18 ../E/receive.txt:16 ../E/recycle.txt:12 ../E/research.txt:18 ../E/researched.txt:14 ../E/researches.txt:27 ../E/retobj.txt:13 ../E/return.txt:29 ../E/round.txt:12 ../E/search.txt:25 ../E/send.txt:17 ../E/shield.txt:18 ../E/sin.txt:11 ../E/sizeof.txt:21 ../E/sniff.txt:16 ../E/space.txt:22 ../E/sqrt.txt:11 ../E/static.txt:20 ../E/strfind.txt:18 ../E/string.txt:32 ../E/strleft.txt:14 ../E/strlen.txt:12 ../E/strlower.txt:10 ../E/strmid.txt:18 ../E/strright.txt:14 ../E/strupper.txt:10 ../E/strval.txt:17 ../E/super.txt:45 ../E/switch.txt:70 ../E/synchro.txt:23 ../E/takeoff.txt:15 ../E/tan.txt:11 ../E/term.txt:30 ../E/testinfo.txt:16 ../E/this.txt:52 ../E/thump.txt:12 ../E/topo.txt:13 ../E/true.txt:4 ../E/trunc.txt:12 ../E/turn.txt:32 ../E/type.txt:32 ../E/var.txt:66 ../E/void.txt:10 ../E/wait.txt:21 ../E/while.txt:46 ../E/writeln.txt:19
#, no-wrap
msgid "See also"
msgstr ""
@@ -7131,7 +7131,7 @@ msgid "Firstly, the condition is valued and then the first result is returned if
msgstr ""
#. type: \t; header
-#: ../E/expr.txt:157 ../E/private.txt:4 ../E/protected.txt:4 ../E/super.txt:4
+#: ../E/expr.txt:157 ../E/extends.txt:4 ../E/extends.txt:65 ../E/private.txt:4 ../E/protected.txt:4 ../E/super.txt:4
#, no-wrap
msgid "Example"
msgstr ""
@@ -7732,18 +7732,168 @@ msgstr ""
msgid "Keyword super
"
msgstr ""
+#. type: Plain text
+#: ../E/super.txt:46
+#, no-wrap
+msgid ""
+"class
, this
\n"
+"Programming, types and categories."
+msgstr ""
+
+#. type: Plain text
+#: ../E/this.txt:53
+#, no-wrap
+msgid ""
+"class
, super
\n"
+"Programming, types and categories."
+msgstr ""
+
+#. type: \b; header
+#: ../E/extends.txt:1
+#, no-wrap
+msgid "Keyword extends
"
+msgstr ""
+
+#. type: \b; header
+#: ../E/extends.txt:30
+#, no-wrap
+msgid "Inherited Members"
+msgstr ""
+
+#. type: Plain text
+#: ../E/extends.txt:31
+#, no-wrap
+msgid "Only public
and protected
members are inherited. private
members are directly inaccessible even for a child, although they can be accessed indirectly through inherited methods."
+msgstr ""
+
+#. type: Plain text
+#: ../E/extends.txt:33
+#, no-wrap
+msgid "Constructors and destructors are not inherited, however, they can be overriden."
+msgstr ""
+
+#. type: \b; header
+#: ../E/extends.txt:35
+#, no-wrap
+msgid "Method Overriding"
+msgstr ""
+
+#. type: Plain text
+#: ../E/extends.txt:36
+#, no-wrap
+msgid "Inherited methods can be overriden (redefined) in the child class definition. Example:"
+msgstr ""
+
+#. type: Source code
+#: ../E/extends.txt:38
+#, no-wrap
+msgid ""
+"public class Parent\n"
+"{\n"
+"\tvoid foo()\n"
+"\t{\n"
+"\t\tmessage(\"foo\");\n"
+"\t}\n"
+"}\n"
+"\n"
+"public class Child extends Parent\n"
+"{\n"
+"\tvoid foo()\n"
+"\t{\n"
+"\t\tmessage(\"bar\");\n"
+"\t}\n"
+"}\n"
+"\n"
+"extern void object::Test()\n"
+"{\n"
+"\tChild child();\n"
+"\tchild.foo(); // Will show \"bar\"\n"
+"}"
+msgstr ""
+
+#. type: \b; header
+#: ../E/extends.txt:62
+#, no-wrap
+msgid "Polymorphism"
+msgstr ""
+
+#. type: Plain text
+#: ../E/extends.txt:63
+#, no-wrap
+msgid "Reference
of type Parent can point to an object of type Child. However, such a pointer can't be used to access a child member. In order to access a child member, it must be assured that the Parent reference really points to a Child object. If that's the case, it can be safely copied to a pointer of type Child, which has access to the child members."
+msgstr ""
+
+#. type: Source code
+#: ../E/extends.txt:67
+#, no-wrap
+msgid ""
+"public class Parent\n"
+"{\n"
+"\tvoid foo()\n"
+"\t{\n"
+"\t\tmessage(\"foo\");\n"
+"\t}\n"
+"}\n"
+"\n"
+"public class Child extends Parent\n"
+"{\n"
+"\tvoid foo()\n"
+"\t{\n"
+"\t\tmessage(\"bar\");\n"
+"\t}\n"
+"\tvoid bar()\n"
+"\t{\n"
+"\t\tmessage(\"foo bar\");\n"
+"\t}\n"
+"}\n"
+"\n"
+"extern void object::Test()\n"
+"{\n"
+"\tParent people[2];\n"
+"\tpeople[0] = new Parent();\n"
+"\tpeople[1] = new Child();\n"
+"\tfor (int i = 0; i < 2; ++i)\n"
+"\t{\n"
+"\t\tpeople[i].foo();\n"
+"\t}\n"
+"\t//people[1].bar(); // Error\n"
+"\tChild child = people[1];\n"
+"\tchild.bar(); // OK\n"
+"}"
+msgstr ""
+
+#. type: \b; header
+#: ../E/extends.txt:102
+#, no-wrap
+msgid "Multiple Inheritance"
+msgstr ""
+
+#. type: Plain text
+#: ../E/extends.txt:103
+#, no-wrap
+msgid "A child cannot have multiple parents, however, a parent can have many children."
+msgstr ""
+
+#. type: Plain text
+#: ../E/extends.txt:106
+#, no-wrap
+msgid ""
+"class
, public
, private
, protected
, new
, reference
, this
, super
\n"
+"Programming, types and categories."
+msgstr ""
+
#. type: Plain text
#: ../E/super.txt:2
#, no-wrap
-msgid "This keyword is similar to this
, however, it grants access to methods from the parent class (see the extends
keyword), which is especially useful for method overwriting."
+msgid "This keyword is similar to this
, however, it grants access to methods from the parent class (see the extends
keyword), which is especially useful for method overriding."
msgstr ""
#. type: Source code
#: ../E/super.txt:6
#, no-wrap
msgid ""
-" public class Parent\n"
-" {\n"
+"public class Parent\n"
+"{\n"
"\tprotected int field;\n"
"\t\n"
"\tvoid Parent()\n"
@@ -7782,17 +7932,41 @@ msgid ""
msgstr ""
#. type: Plain text
-#: ../E/super.txt:46
+#: ../E/extends.txt:2
+#, no-wrap
+msgid "This keyword is used in a class
definition when we want the class to inherit members from another class. The class which is extended we usually call a parent or base, the extending class we call a child."
+msgstr ""
+
+#. type: Source code
+#: ../E/extends.txt:6
#, no-wrap
msgid ""
-"class
, this
\n"
-"Programming, types and categories."
+"public class Parent\n"
+"{\n"
+"\tvoid foo()\n"
+"\t{\n"
+"\t\tmessage(\"foo\");\n"
+"\t}\n"
+"}\n"
+"\n"
+"public class Child extends Parent\n"
+"{\n"
+"\tvoid bar()\n"
+"\t{\n"
+"\t\tmessage(\"bar\");\n"
+"\t}\n"
+"}\n"
+"\n"
+"extern void object::Test()\n"
+"{\n"
+"\tChild child();\n"
+"\tchild.foo(); // Will show \"foo\"\n"
+"\tchild.bar(); // Will show \"bar\"\n"
+"}"
msgstr ""
#. type: Plain text
-#: ../E/this.txt:53
+#: ../E/extends.txt:60
#, no-wrap
-msgid ""
-"class
, super
\n"
-"Programming, types and categories."
+msgid "A parent's method can be called inside an overriden method by using the super
keyword."
msgstr ""
diff --git a/help/cbot/po/de.po b/help/cbot/po/de.po
index 8816ea5c..46a582c6 100644
--- a/help/cbot/po/de.po
+++ b/help/cbot/po/de.po
@@ -53,7 +53,7 @@ msgid "Time in seconds."
msgstr "Zeit in Sekunden."
#. type: \t; header
-#: ../E/abstime.txt:10 ../E/acos.txt:11 ../E/aim.txt:23 ../E/array.txt:41 ../E/asin.txt:11 ../E/atan.txt:11 ../E/atan2.txt:16 ../E/bloc.txt:48 ../E/bool.txt:4 ../E/break.txt:24 ../E/build.txt:27 ../E/buildingenabled.txt:22 ../E/busy.txt:14 ../E/canbuild.txt:22 ../E/canresearch.txt:14 ../E/category.txt:109 ../E/ceil.txt:12 ../E/class.txt:120 ../E/close.txt:6 ../E/cond.txt:4 ../E/continue.txt:24 ../E/cos.txt:11 ../E/deletef.txt:9 ../E/delinfo.txt:13 ../E/destroy.txt:15 ../E/detect.txt:27 ../E/direct.txt:13 ../E/dist.txt:29 ../E/dist2d.txt:13 ../E/do.txt:27 ../E/drop.txt:28 ../E/eof.txt:13 ../E/errmode.txt:32 ../E/expr.txt:197 ../E/extern.txt:29 ../E/factory.txt:21 ../E/false.txt:4 ../E/file.txt:16 ../E/fire.txt:30 ../E/flatgrnd.txt:16 ../E/flatspace.txt:25 ../E/float.txt:24 ../E/floor.txt:12 ../E/for.txt:51 ../E/function.txt:129 ../E/goto.txt:34 ../E/grab.txt:28 ../E/if.txt:39 ../E/int.txt:18 ../E/jet.txt:14 ../E/message.txt:24 ../E/motor.txt:38 ../E/move.txt:21 ../E/nan.txt:14 ../E/new.txt:20 ../E/null.txt:4 ../E/object.txt:79 ../E/open.txt:18 ../E/openfile.txt:10 ../E/pencolor.txt:14 ../E/pendown.txt:17 ../E/penup.txt:11 ../E/penwidth.txt:14 ../E/point.txt:35 ../E/pointer.txt:51 ../E/pow.txt:14 ../E/private.txt:19 ../E/produce.txt:30 ../E/protected.txt:26 ../E/public.txt:49 ../E/radar.txt:80 ../E/radarall.txt:19 ../E/rand.txt:8 ../E/readln.txt:18 ../E/receive.txt:16 ../E/recycle.txt:12 ../E/research.txt:18 ../E/researched.txt:14 ../E/researches.txt:27 ../E/retobj.txt:13 ../E/return.txt:29 ../E/round.txt:12 ../E/search.txt:25 ../E/send.txt:17 ../E/shield.txt:18 ../E/sin.txt:11 ../E/sizeof.txt:21 ../E/sniff.txt:16 ../E/space.txt:22 ../E/sqrt.txt:11 ../E/static.txt:20 ../E/strfind.txt:18 ../E/string.txt:32 ../E/strleft.txt:14 ../E/strlen.txt:12 ../E/strlower.txt:10 ../E/strmid.txt:18 ../E/strright.txt:14 ../E/strupper.txt:10 ../E/strval.txt:17 ../E/super.txt:45 ../E/switch.txt:70 ../E/synchro.txt:23 ../E/takeoff.txt:15 ../E/tan.txt:11 ../E/term.txt:30 ../E/testinfo.txt:16 ../E/this.txt:52 ../E/thump.txt:12 ../E/topo.txt:13 ../E/true.txt:4 ../E/trunc.txt:12 ../E/turn.txt:32 ../E/type.txt:32 ../E/var.txt:66 ../E/void.txt:10 ../E/wait.txt:21 ../E/while.txt:46 ../E/writeln.txt:19
+#: ../E/abstime.txt:10 ../E/acos.txt:11 ../E/aim.txt:23 ../E/array.txt:41 ../E/asin.txt:11 ../E/atan.txt:11 ../E/atan2.txt:16 ../E/bloc.txt:48 ../E/bool.txt:4 ../E/break.txt:24 ../E/build.txt:27 ../E/buildingenabled.txt:22 ../E/busy.txt:14 ../E/canbuild.txt:22 ../E/canresearch.txt:14 ../E/category.txt:109 ../E/ceil.txt:12 ../E/class.txt:120 ../E/close.txt:6 ../E/cond.txt:4 ../E/continue.txt:24 ../E/cos.txt:11 ../E/deletef.txt:9 ../E/delinfo.txt:13 ../E/destroy.txt:15 ../E/detect.txt:27 ../E/direct.txt:13 ../E/dist.txt:29 ../E/dist2d.txt:13 ../E/do.txt:27 ../E/drop.txt:28 ../E/eof.txt:13 ../E/errmode.txt:32 ../E/expr.txt:197 ../E/extends.txt:105 ../E/extern.txt:29 ../E/factory.txt:21 ../E/false.txt:4 ../E/file.txt:16 ../E/fire.txt:30 ../E/flatgrnd.txt:16 ../E/flatspace.txt:25 ../E/float.txt:24 ../E/floor.txt:12 ../E/for.txt:51 ../E/function.txt:129 ../E/goto.txt:34 ../E/grab.txt:28 ../E/if.txt:39 ../E/int.txt:18 ../E/jet.txt:14 ../E/message.txt:24 ../E/motor.txt:38 ../E/move.txt:21 ../E/nan.txt:14 ../E/new.txt:20 ../E/null.txt:4 ../E/object.txt:79 ../E/open.txt:18 ../E/openfile.txt:10 ../E/pencolor.txt:14 ../E/pendown.txt:17 ../E/penup.txt:11 ../E/penwidth.txt:14 ../E/point.txt:35 ../E/pointer.txt:51 ../E/pow.txt:14 ../E/private.txt:19 ../E/produce.txt:30 ../E/protected.txt:26 ../E/public.txt:49 ../E/radar.txt:80 ../E/radarall.txt:19 ../E/rand.txt:8 ../E/readln.txt:18 ../E/receive.txt:16 ../E/recycle.txt:12 ../E/research.txt:18 ../E/researched.txt:14 ../E/researches.txt:27 ../E/retobj.txt:13 ../E/return.txt:29 ../E/round.txt:12 ../E/search.txt:25 ../E/send.txt:17 ../E/shield.txt:18 ../E/sin.txt:11 ../E/sizeof.txt:21 ../E/sniff.txt:16 ../E/space.txt:22 ../E/sqrt.txt:11 ../E/static.txt:20 ../E/strfind.txt:18 ../E/string.txt:32 ../E/strleft.txt:14 ../E/strlen.txt:12 ../E/strlower.txt:10 ../E/strmid.txt:18 ../E/strright.txt:14 ../E/strupper.txt:10 ../E/strval.txt:17 ../E/super.txt:45 ../E/switch.txt:70 ../E/synchro.txt:23 ../E/takeoff.txt:15 ../E/tan.txt:11 ../E/term.txt:30 ../E/testinfo.txt:16 ../E/this.txt:52 ../E/thump.txt:12 ../E/topo.txt:13 ../E/true.txt:4 ../E/trunc.txt:12 ../E/turn.txt:32 ../E/type.txt:32 ../E/var.txt:66 ../E/void.txt:10 ../E/wait.txt:21 ../E/while.txt:46 ../E/writeln.txt:19
#, no-wrap
msgid "See also"
msgstr "Siehe auch"
@@ -7834,7 +7834,7 @@ msgid "Firstly, the condition is valued and then the first result is returned if
msgstr ""
#. type: \t; header
-#: ../E/expr.txt:157 ../E/private.txt:4 ../E/protected.txt:4 ../E/super.txt:4
+#: ../E/expr.txt:157 ../E/extends.txt:4 ../E/extends.txt:65 ../E/private.txt:4 ../E/protected.txt:4 ../E/super.txt:4
#, no-wrap
msgid "Example"
msgstr ""
@@ -8435,18 +8435,168 @@ msgstr ""
msgid "Keyword super
"
msgstr ""
+#. type: Plain text
+#: ../E/super.txt:46
+#, no-wrap
+msgid ""
+"class
, this
\n"
+"Programming, types and categories."
+msgstr ""
+
+#. type: Plain text
+#: ../E/this.txt:53
+#, no-wrap
+msgid ""
+"class
, super
\n"
+"Programming, types and categories."
+msgstr ""
+
+#. type: \b; header
+#: ../E/extends.txt:1
+#, no-wrap
+msgid "Keyword extends
"
+msgstr ""
+
+#. type: \b; header
+#: ../E/extends.txt:30
+#, no-wrap
+msgid "Inherited Members"
+msgstr ""
+
+#. type: Plain text
+#: ../E/extends.txt:31
+#, no-wrap
+msgid "Only public
and protected
members are inherited. private
members are directly inaccessible even for a child, although they can be accessed indirectly through inherited methods."
+msgstr ""
+
+#. type: Plain text
+#: ../E/extends.txt:33
+#, no-wrap
+msgid "Constructors and destructors are not inherited, however, they can be overriden."
+msgstr ""
+
+#. type: \b; header
+#: ../E/extends.txt:35
+#, no-wrap
+msgid "Method Overriding"
+msgstr ""
+
+#. type: Plain text
+#: ../E/extends.txt:36
+#, no-wrap
+msgid "Inherited methods can be overriden (redefined) in the child class definition. Example:"
+msgstr ""
+
+#. type: Source code
+#: ../E/extends.txt:38
+#, no-wrap
+msgid ""
+"public class Parent\n"
+"{\n"
+"\tvoid foo()\n"
+"\t{\n"
+"\t\tmessage(\"foo\");\n"
+"\t}\n"
+"}\n"
+"\n"
+"public class Child extends Parent\n"
+"{\n"
+"\tvoid foo()\n"
+"\t{\n"
+"\t\tmessage(\"bar\");\n"
+"\t}\n"
+"}\n"
+"\n"
+"extern void object::Test()\n"
+"{\n"
+"\tChild child();\n"
+"\tchild.foo(); // Will show \"bar\"\n"
+"}"
+msgstr ""
+
+#. type: \b; header
+#: ../E/extends.txt:62
+#, no-wrap
+msgid "Polymorphism"
+msgstr ""
+
+#. type: Plain text
+#: ../E/extends.txt:63
+#, no-wrap
+msgid "Reference
of type Parent can point to an object of type Child. However, such a pointer can't be used to access a child member. In order to access a child member, it must be assured that the Parent reference really points to a Child object. If that's the case, it can be safely copied to a pointer of type Child, which has access to the child members."
+msgstr ""
+
+#. type: Source code
+#: ../E/extends.txt:67
+#, no-wrap
+msgid ""
+"public class Parent\n"
+"{\n"
+"\tvoid foo()\n"
+"\t{\n"
+"\t\tmessage(\"foo\");\n"
+"\t}\n"
+"}\n"
+"\n"
+"public class Child extends Parent\n"
+"{\n"
+"\tvoid foo()\n"
+"\t{\n"
+"\t\tmessage(\"bar\");\n"
+"\t}\n"
+"\tvoid bar()\n"
+"\t{\n"
+"\t\tmessage(\"foo bar\");\n"
+"\t}\n"
+"}\n"
+"\n"
+"extern void object::Test()\n"
+"{\n"
+"\tParent people[2];\n"
+"\tpeople[0] = new Parent();\n"
+"\tpeople[1] = new Child();\n"
+"\tfor (int i = 0; i < 2; ++i)\n"
+"\t{\n"
+"\t\tpeople[i].foo();\n"
+"\t}\n"
+"\t//people[1].bar(); // Error\n"
+"\tChild child = people[1];\n"
+"\tchild.bar(); // OK\n"
+"}"
+msgstr ""
+
+#. type: \b; header
+#: ../E/extends.txt:102
+#, no-wrap
+msgid "Multiple Inheritance"
+msgstr ""
+
+#. type: Plain text
+#: ../E/extends.txt:103
+#, no-wrap
+msgid "A child cannot have multiple parents, however, a parent can have many children."
+msgstr ""
+
+#. type: Plain text
+#: ../E/extends.txt:106
+#, no-wrap
+msgid ""
+"class
, public
, private
, protected
, new
, reference
, this
, super
\n"
+"Programming, types and categories."
+msgstr ""
+
#. type: Plain text
#: ../E/super.txt:2
#, no-wrap
-msgid "This keyword is similar to this
, however, it grants access to methods from the parent class (see the extends
keyword), which is especially useful for method overwriting."
+msgid "This keyword is similar to this
, however, it grants access to methods from the parent class (see the extends
keyword), which is especially useful for method overriding."
msgstr ""
#. type: Source code
#: ../E/super.txt:6
#, no-wrap
msgid ""
-" public class Parent\n"
-" {\n"
+"public class Parent\n"
+"{\n"
"\tprotected int field;\n"
"\t\n"
"\tvoid Parent()\n"
@@ -8485,17 +8635,41 @@ msgid ""
msgstr ""
#. type: Plain text
-#: ../E/super.txt:46
+#: ../E/extends.txt:2
+#, no-wrap
+msgid "This keyword is used in a class
definition when we want the class to inherit members from another class. The class which is extended we usually call a parent or base, the extending class we call a child."
+msgstr ""
+
+#. type: Source code
+#: ../E/extends.txt:6
#, no-wrap
msgid ""
-"class
, this
\n"
-"Programming, types and categories."
+"public class Parent\n"
+"{\n"
+"\tvoid foo()\n"
+"\t{\n"
+"\t\tmessage(\"foo\");\n"
+"\t}\n"
+"}\n"
+"\n"
+"public class Child extends Parent\n"
+"{\n"
+"\tvoid bar()\n"
+"\t{\n"
+"\t\tmessage(\"bar\");\n"
+"\t}\n"
+"}\n"
+"\n"
+"extern void object::Test()\n"
+"{\n"
+"\tChild child();\n"
+"\tchild.foo(); // Will show \"foo\"\n"
+"\tchild.bar(); // Will show \"bar\"\n"
+"}"
msgstr ""
#. type: Plain text
-#: ../E/this.txt:53
+#: ../E/extends.txt:60
#, no-wrap
-msgid ""
-"class
, super
\n"
-"Programming, types and categories."
+msgid "A parent's method can be called inside an overriden method by using the super
keyword."
msgstr ""
diff --git a/help/cbot/po/fr.po b/help/cbot/po/fr.po
index 38b972bf..77826058 100644
--- a/help/cbot/po/fr.po
+++ b/help/cbot/po/fr.po
@@ -52,7 +52,7 @@ msgid "Time in seconds."
msgstr "Temps en secondes."
#. type: \t; header
-#: ../E/abstime.txt:10 ../E/acos.txt:11 ../E/aim.txt:23 ../E/array.txt:41 ../E/asin.txt:11 ../E/atan.txt:11 ../E/atan2.txt:16 ../E/bloc.txt:48 ../E/bool.txt:4 ../E/break.txt:24 ../E/build.txt:27 ../E/buildingenabled.txt:22 ../E/busy.txt:14 ../E/canbuild.txt:22 ../E/canresearch.txt:14 ../E/category.txt:109 ../E/ceil.txt:12 ../E/class.txt:120 ../E/close.txt:6 ../E/cond.txt:4 ../E/continue.txt:24 ../E/cos.txt:11 ../E/deletef.txt:9 ../E/delinfo.txt:13 ../E/destroy.txt:15 ../E/detect.txt:27 ../E/direct.txt:13 ../E/dist.txt:29 ../E/dist2d.txt:13 ../E/do.txt:27 ../E/drop.txt:28 ../E/eof.txt:13 ../E/errmode.txt:32 ../E/expr.txt:197 ../E/extern.txt:29 ../E/factory.txt:21 ../E/false.txt:4 ../E/file.txt:16 ../E/fire.txt:30 ../E/flatgrnd.txt:16 ../E/flatspace.txt:25 ../E/float.txt:24 ../E/floor.txt:12 ../E/for.txt:51 ../E/function.txt:129 ../E/goto.txt:34 ../E/grab.txt:28 ../E/if.txt:39 ../E/int.txt:18 ../E/jet.txt:14 ../E/message.txt:24 ../E/motor.txt:38 ../E/move.txt:21 ../E/nan.txt:14 ../E/new.txt:20 ../E/null.txt:4 ../E/object.txt:79 ../E/open.txt:18 ../E/openfile.txt:10 ../E/pencolor.txt:14 ../E/pendown.txt:17 ../E/penup.txt:11 ../E/penwidth.txt:14 ../E/point.txt:35 ../E/pointer.txt:51 ../E/pow.txt:14 ../E/private.txt:19 ../E/produce.txt:30 ../E/protected.txt:26 ../E/public.txt:49 ../E/radar.txt:80 ../E/radarall.txt:19 ../E/rand.txt:8 ../E/readln.txt:18 ../E/receive.txt:16 ../E/recycle.txt:12 ../E/research.txt:18 ../E/researched.txt:14 ../E/researches.txt:27 ../E/retobj.txt:13 ../E/return.txt:29 ../E/round.txt:12 ../E/search.txt:25 ../E/send.txt:17 ../E/shield.txt:18 ../E/sin.txt:11 ../E/sizeof.txt:21 ../E/sniff.txt:16 ../E/space.txt:22 ../E/sqrt.txt:11 ../E/static.txt:20 ../E/strfind.txt:18 ../E/string.txt:32 ../E/strleft.txt:14 ../E/strlen.txt:12 ../E/strlower.txt:10 ../E/strmid.txt:18 ../E/strright.txt:14 ../E/strupper.txt:10 ../E/strval.txt:17 ../E/super.txt:45 ../E/switch.txt:70 ../E/synchro.txt:23 ../E/takeoff.txt:15 ../E/tan.txt:11 ../E/term.txt:30 ../E/testinfo.txt:16 ../E/this.txt:52 ../E/thump.txt:12 ../E/topo.txt:13 ../E/true.txt:4 ../E/trunc.txt:12 ../E/turn.txt:32 ../E/type.txt:32 ../E/var.txt:66 ../E/void.txt:10 ../E/wait.txt:21 ../E/while.txt:46 ../E/writeln.txt:19
+#: ../E/abstime.txt:10 ../E/acos.txt:11 ../E/aim.txt:23 ../E/array.txt:41 ../E/asin.txt:11 ../E/atan.txt:11 ../E/atan2.txt:16 ../E/bloc.txt:48 ../E/bool.txt:4 ../E/break.txt:24 ../E/build.txt:27 ../E/buildingenabled.txt:22 ../E/busy.txt:14 ../E/canbuild.txt:22 ../E/canresearch.txt:14 ../E/category.txt:109 ../E/ceil.txt:12 ../E/class.txt:120 ../E/close.txt:6 ../E/cond.txt:4 ../E/continue.txt:24 ../E/cos.txt:11 ../E/deletef.txt:9 ../E/delinfo.txt:13 ../E/destroy.txt:15 ../E/detect.txt:27 ../E/direct.txt:13 ../E/dist.txt:29 ../E/dist2d.txt:13 ../E/do.txt:27 ../E/drop.txt:28 ../E/eof.txt:13 ../E/errmode.txt:32 ../E/expr.txt:197 ../E/extends.txt:105 ../E/extern.txt:29 ../E/factory.txt:21 ../E/false.txt:4 ../E/file.txt:16 ../E/fire.txt:30 ../E/flatgrnd.txt:16 ../E/flatspace.txt:25 ../E/float.txt:24 ../E/floor.txt:12 ../E/for.txt:51 ../E/function.txt:129 ../E/goto.txt:34 ../E/grab.txt:28 ../E/if.txt:39 ../E/int.txt:18 ../E/jet.txt:14 ../E/message.txt:24 ../E/motor.txt:38 ../E/move.txt:21 ../E/nan.txt:14 ../E/new.txt:20 ../E/null.txt:4 ../E/object.txt:79 ../E/open.txt:18 ../E/openfile.txt:10 ../E/pencolor.txt:14 ../E/pendown.txt:17 ../E/penup.txt:11 ../E/penwidth.txt:14 ../E/point.txt:35 ../E/pointer.txt:51 ../E/pow.txt:14 ../E/private.txt:19 ../E/produce.txt:30 ../E/protected.txt:26 ../E/public.txt:49 ../E/radar.txt:80 ../E/radarall.txt:19 ../E/rand.txt:8 ../E/readln.txt:18 ../E/receive.txt:16 ../E/recycle.txt:12 ../E/research.txt:18 ../E/researched.txt:14 ../E/researches.txt:27 ../E/retobj.txt:13 ../E/return.txt:29 ../E/round.txt:12 ../E/search.txt:25 ../E/send.txt:17 ../E/shield.txt:18 ../E/sin.txt:11 ../E/sizeof.txt:21 ../E/sniff.txt:16 ../E/space.txt:22 ../E/sqrt.txt:11 ../E/static.txt:20 ../E/strfind.txt:18 ../E/string.txt:32 ../E/strleft.txt:14 ../E/strlen.txt:12 ../E/strlower.txt:10 ../E/strmid.txt:18 ../E/strright.txt:14 ../E/strupper.txt:10 ../E/strval.txt:17 ../E/super.txt:45 ../E/switch.txt:70 ../E/synchro.txt:23 ../E/takeoff.txt:15 ../E/tan.txt:11 ../E/term.txt:30 ../E/testinfo.txt:16 ../E/this.txt:52 ../E/thump.txt:12 ../E/topo.txt:13 ../E/true.txt:4 ../E/trunc.txt:12 ../E/turn.txt:32 ../E/type.txt:32 ../E/var.txt:66 ../E/void.txt:10 ../E/wait.txt:21 ../E/while.txt:46 ../E/writeln.txt:19
#, no-wrap
msgid "See also"
msgstr "Voir aussi"
@@ -7828,7 +7828,7 @@ msgid "Firstly, the condition is valued and then the first result is returned if
msgstr ""
#. type: \t; header
-#: ../E/expr.txt:157 ../E/private.txt:4 ../E/protected.txt:4 ../E/super.txt:4
+#: ../E/expr.txt:157 ../E/extends.txt:4 ../E/extends.txt:65 ../E/private.txt:4 ../E/protected.txt:4 ../E/super.txt:4
#, no-wrap
msgid "Example"
msgstr ""
@@ -8436,18 +8436,168 @@ msgstr ""
msgid "Keyword super
"
msgstr ""
+#. type: Plain text
+#: ../E/super.txt:46
+#, no-wrap
+msgid ""
+"class
, this
\n"
+"Programming, types and categories."
+msgstr ""
+
+#. type: Plain text
+#: ../E/this.txt:53
+#, no-wrap
+msgid ""
+"class
, super
\n"
+"Programming, types and categories."
+msgstr ""
+
+#. type: \b; header
+#: ../E/extends.txt:1
+#, no-wrap
+msgid "Keyword extends
"
+msgstr ""
+
+#. type: \b; header
+#: ../E/extends.txt:30
+#, no-wrap
+msgid "Inherited Members"
+msgstr ""
+
+#. type: Plain text
+#: ../E/extends.txt:31
+#, no-wrap
+msgid "Only public
and protected
members are inherited. private
members are directly inaccessible even for a child, although they can be accessed indirectly through inherited methods."
+msgstr ""
+
+#. type: Plain text
+#: ../E/extends.txt:33
+#, no-wrap
+msgid "Constructors and destructors are not inherited, however, they can be overriden."
+msgstr ""
+
+#. type: \b; header
+#: ../E/extends.txt:35
+#, no-wrap
+msgid "Method Overriding"
+msgstr ""
+
+#. type: Plain text
+#: ../E/extends.txt:36
+#, no-wrap
+msgid "Inherited methods can be overriden (redefined) in the child class definition. Example:"
+msgstr ""
+
+#. type: Source code
+#: ../E/extends.txt:38
+#, no-wrap
+msgid ""
+"public class Parent\n"
+"{\n"
+"\tvoid foo()\n"
+"\t{\n"
+"\t\tmessage(\"foo\");\n"
+"\t}\n"
+"}\n"
+"\n"
+"public class Child extends Parent\n"
+"{\n"
+"\tvoid foo()\n"
+"\t{\n"
+"\t\tmessage(\"bar\");\n"
+"\t}\n"
+"}\n"
+"\n"
+"extern void object::Test()\n"
+"{\n"
+"\tChild child();\n"
+"\tchild.foo(); // Will show \"bar\"\n"
+"}"
+msgstr ""
+
+#. type: \b; header
+#: ../E/extends.txt:62
+#, no-wrap
+msgid "Polymorphism"
+msgstr ""
+
+#. type: Plain text
+#: ../E/extends.txt:63
+#, no-wrap
+msgid "Reference
of type Parent can point to an object of type Child. However, such a pointer can't be used to access a child member. In order to access a child member, it must be assured that the Parent reference really points to a Child object. If that's the case, it can be safely copied to a pointer of type Child, which has access to the child members."
+msgstr ""
+
+#. type: Source code
+#: ../E/extends.txt:67
+#, no-wrap
+msgid ""
+"public class Parent\n"
+"{\n"
+"\tvoid foo()\n"
+"\t{\n"
+"\t\tmessage(\"foo\");\n"
+"\t}\n"
+"}\n"
+"\n"
+"public class Child extends Parent\n"
+"{\n"
+"\tvoid foo()\n"
+"\t{\n"
+"\t\tmessage(\"bar\");\n"
+"\t}\n"
+"\tvoid bar()\n"
+"\t{\n"
+"\t\tmessage(\"foo bar\");\n"
+"\t}\n"
+"}\n"
+"\n"
+"extern void object::Test()\n"
+"{\n"
+"\tParent people[2];\n"
+"\tpeople[0] = new Parent();\n"
+"\tpeople[1] = new Child();\n"
+"\tfor (int i = 0; i < 2; ++i)\n"
+"\t{\n"
+"\t\tpeople[i].foo();\n"
+"\t}\n"
+"\t//people[1].bar(); // Error\n"
+"\tChild child = people[1];\n"
+"\tchild.bar(); // OK\n"
+"}"
+msgstr ""
+
+#. type: \b; header
+#: ../E/extends.txt:102
+#, no-wrap
+msgid "Multiple Inheritance"
+msgstr ""
+
+#. type: Plain text
+#: ../E/extends.txt:103
+#, no-wrap
+msgid "A child cannot have multiple parents, however, a parent can have many children."
+msgstr ""
+
+#. type: Plain text
+#: ../E/extends.txt:106
+#, no-wrap
+msgid ""
+"class
, public
, private
, protected
, new
, reference
, this
, super
\n"
+"Programming, types and categories."
+msgstr ""
+
#. type: Plain text
#: ../E/super.txt:2
#, no-wrap
-msgid "This keyword is similar to this
, however, it grants access to methods from the parent class (see the extends
keyword), which is especially useful for method overwriting."
+msgid "This keyword is similar to this
, however, it grants access to methods from the parent class (see the extends
keyword), which is especially useful for method overriding."
msgstr ""
#. type: Source code
#: ../E/super.txt:6
#, no-wrap
msgid ""
-" public class Parent\n"
-" {\n"
+"public class Parent\n"
+"{\n"
"\tprotected int field;\n"
"\t\n"
"\tvoid Parent()\n"
@@ -8486,17 +8636,41 @@ msgid ""
msgstr ""
#. type: Plain text
-#: ../E/super.txt:46
+#: ../E/extends.txt:2
+#, no-wrap
+msgid "This keyword is used in a class
definition when we want the class to inherit members from another class. The class which is extended we usually call a parent or base, the extending class we call a child."
+msgstr ""
+
+#. type: Source code
+#: ../E/extends.txt:6
#, no-wrap
msgid ""
-"class
, this
\n"
-"Programming, types and categories."
+"public class Parent\n"
+"{\n"
+"\tvoid foo()\n"
+"\t{\n"
+"\t\tmessage(\"foo\");\n"
+"\t}\n"
+"}\n"
+"\n"
+"public class Child extends Parent\n"
+"{\n"
+"\tvoid bar()\n"
+"\t{\n"
+"\t\tmessage(\"bar\");\n"
+"\t}\n"
+"}\n"
+"\n"
+"extern void object::Test()\n"
+"{\n"
+"\tChild child();\n"
+"\tchild.foo(); // Will show \"foo\"\n"
+"\tchild.bar(); // Will show \"bar\"\n"
+"}"
msgstr ""
#. type: Plain text
-#: ../E/this.txt:53
+#: ../E/extends.txt:60
#, no-wrap
-msgid ""
-"class
, super
\n"
-"Programming, types and categories."
+msgid "A parent's method can be called inside an overriden method by using the super
keyword."
msgstr ""
diff --git a/help/cbot/po/pl.po b/help/cbot/po/pl.po
index 6bf2cda7..c565d44e 100644
--- a/help/cbot/po/pl.po
+++ b/help/cbot/po/pl.po
@@ -53,7 +53,7 @@ msgid "Time in seconds."
msgstr "Czas w sekundach."
#. type: \t; header
-#: ../E/abstime.txt:10 ../E/acos.txt:11 ../E/aim.txt:23 ../E/array.txt:41 ../E/asin.txt:11 ../E/atan.txt:11 ../E/atan2.txt:16 ../E/bloc.txt:48 ../E/bool.txt:4 ../E/break.txt:24 ../E/build.txt:27 ../E/buildingenabled.txt:22 ../E/busy.txt:14 ../E/canbuild.txt:22 ../E/canresearch.txt:14 ../E/category.txt:109 ../E/ceil.txt:12 ../E/class.txt:120 ../E/close.txt:6 ../E/cond.txt:4 ../E/continue.txt:24 ../E/cos.txt:11 ../E/deletef.txt:9 ../E/delinfo.txt:13 ../E/destroy.txt:15 ../E/detect.txt:27 ../E/direct.txt:13 ../E/dist.txt:29 ../E/dist2d.txt:13 ../E/do.txt:27 ../E/drop.txt:28 ../E/eof.txt:13 ../E/errmode.txt:32 ../E/expr.txt:197 ../E/extern.txt:29 ../E/factory.txt:21 ../E/false.txt:4 ../E/file.txt:16 ../E/fire.txt:30 ../E/flatgrnd.txt:16 ../E/flatspace.txt:25 ../E/float.txt:24 ../E/floor.txt:12 ../E/for.txt:51 ../E/function.txt:129 ../E/goto.txt:34 ../E/grab.txt:28 ../E/if.txt:39 ../E/int.txt:18 ../E/jet.txt:14 ../E/message.txt:24 ../E/motor.txt:38 ../E/move.txt:21 ../E/nan.txt:14 ../E/new.txt:20 ../E/null.txt:4 ../E/object.txt:79 ../E/open.txt:18 ../E/openfile.txt:10 ../E/pencolor.txt:14 ../E/pendown.txt:17 ../E/penup.txt:11 ../E/penwidth.txt:14 ../E/point.txt:35 ../E/pointer.txt:51 ../E/pow.txt:14 ../E/private.txt:19 ../E/produce.txt:30 ../E/protected.txt:26 ../E/public.txt:49 ../E/radar.txt:80 ../E/radarall.txt:19 ../E/rand.txt:8 ../E/readln.txt:18 ../E/receive.txt:16 ../E/recycle.txt:12 ../E/research.txt:18 ../E/researched.txt:14 ../E/researches.txt:27 ../E/retobj.txt:13 ../E/return.txt:29 ../E/round.txt:12 ../E/search.txt:25 ../E/send.txt:17 ../E/shield.txt:18 ../E/sin.txt:11 ../E/sizeof.txt:21 ../E/sniff.txt:16 ../E/space.txt:22 ../E/sqrt.txt:11 ../E/static.txt:20 ../E/strfind.txt:18 ../E/string.txt:32 ../E/strleft.txt:14 ../E/strlen.txt:12 ../E/strlower.txt:10 ../E/strmid.txt:18 ../E/strright.txt:14 ../E/strupper.txt:10 ../E/strval.txt:17 ../E/super.txt:45 ../E/switch.txt:70 ../E/synchro.txt:23 ../E/takeoff.txt:15 ../E/tan.txt:11 ../E/term.txt:30 ../E/testinfo.txt:16 ../E/this.txt:52 ../E/thump.txt:12 ../E/topo.txt:13 ../E/true.txt:4 ../E/trunc.txt:12 ../E/turn.txt:32 ../E/type.txt:32 ../E/var.txt:66 ../E/void.txt:10 ../E/wait.txt:21 ../E/while.txt:46 ../E/writeln.txt:19
+#: ../E/abstime.txt:10 ../E/acos.txt:11 ../E/aim.txt:23 ../E/array.txt:41 ../E/asin.txt:11 ../E/atan.txt:11 ../E/atan2.txt:16 ../E/bloc.txt:48 ../E/bool.txt:4 ../E/break.txt:24 ../E/build.txt:27 ../E/buildingenabled.txt:22 ../E/busy.txt:14 ../E/canbuild.txt:22 ../E/canresearch.txt:14 ../E/category.txt:109 ../E/ceil.txt:12 ../E/class.txt:120 ../E/close.txt:6 ../E/cond.txt:4 ../E/continue.txt:24 ../E/cos.txt:11 ../E/deletef.txt:9 ../E/delinfo.txt:13 ../E/destroy.txt:15 ../E/detect.txt:27 ../E/direct.txt:13 ../E/dist.txt:29 ../E/dist2d.txt:13 ../E/do.txt:27 ../E/drop.txt:28 ../E/eof.txt:13 ../E/errmode.txt:32 ../E/expr.txt:197 ../E/extends.txt:105 ../E/extern.txt:29 ../E/factory.txt:21 ../E/false.txt:4 ../E/file.txt:16 ../E/fire.txt:30 ../E/flatgrnd.txt:16 ../E/flatspace.txt:25 ../E/float.txt:24 ../E/floor.txt:12 ../E/for.txt:51 ../E/function.txt:129 ../E/goto.txt:34 ../E/grab.txt:28 ../E/if.txt:39 ../E/int.txt:18 ../E/jet.txt:14 ../E/message.txt:24 ../E/motor.txt:38 ../E/move.txt:21 ../E/nan.txt:14 ../E/new.txt:20 ../E/null.txt:4 ../E/object.txt:79 ../E/open.txt:18 ../E/openfile.txt:10 ../E/pencolor.txt:14 ../E/pendown.txt:17 ../E/penup.txt:11 ../E/penwidth.txt:14 ../E/point.txt:35 ../E/pointer.txt:51 ../E/pow.txt:14 ../E/private.txt:19 ../E/produce.txt:30 ../E/protected.txt:26 ../E/public.txt:49 ../E/radar.txt:80 ../E/radarall.txt:19 ../E/rand.txt:8 ../E/readln.txt:18 ../E/receive.txt:16 ../E/recycle.txt:12 ../E/research.txt:18 ../E/researched.txt:14 ../E/researches.txt:27 ../E/retobj.txt:13 ../E/return.txt:29 ../E/round.txt:12 ../E/search.txt:25 ../E/send.txt:17 ../E/shield.txt:18 ../E/sin.txt:11 ../E/sizeof.txt:21 ../E/sniff.txt:16 ../E/space.txt:22 ../E/sqrt.txt:11 ../E/static.txt:20 ../E/strfind.txt:18 ../E/string.txt:32 ../E/strleft.txt:14 ../E/strlen.txt:12 ../E/strlower.txt:10 ../E/strmid.txt:18 ../E/strright.txt:14 ../E/strupper.txt:10 ../E/strval.txt:17 ../E/super.txt:45 ../E/switch.txt:70 ../E/synchro.txt:23 ../E/takeoff.txt:15 ../E/tan.txt:11 ../E/term.txt:30 ../E/testinfo.txt:16 ../E/this.txt:52 ../E/thump.txt:12 ../E/topo.txt:13 ../E/true.txt:4 ../E/trunc.txt:12 ../E/turn.txt:32 ../E/type.txt:32 ../E/var.txt:66 ../E/void.txt:10 ../E/wait.txt:21 ../E/while.txt:46 ../E/writeln.txt:19
#, no-wrap
msgid "See also"
msgstr "Zobacz również"
@@ -8000,7 +8000,7 @@ msgid "Firstly, the condition is valued and then the first result is returned if
msgstr ""
#. type: \t; header
-#: ../E/expr.txt:157 ../E/private.txt:4 ../E/protected.txt:4 ../E/super.txt:4
+#: ../E/expr.txt:157 ../E/extends.txt:4 ../E/extends.txt:65 ../E/private.txt:4 ../E/protected.txt:4 ../E/super.txt:4
#, no-wrap
msgid "Example"
msgstr ""
@@ -8601,18 +8601,168 @@ msgstr ""
msgid "Keyword super
"
msgstr ""
+#. type: Plain text
+#: ../E/super.txt:46
+#, no-wrap
+msgid ""
+"class
, this
\n"
+"Programming, types and categories."
+msgstr ""
+
+#. type: Plain text
+#: ../E/this.txt:53
+#, no-wrap
+msgid ""
+"class
, super
\n"
+"Programming, types and categories."
+msgstr ""
+
+#. type: \b; header
+#: ../E/extends.txt:1
+#, no-wrap
+msgid "Keyword extends
"
+msgstr ""
+
+#. type: \b; header
+#: ../E/extends.txt:30
+#, no-wrap
+msgid "Inherited Members"
+msgstr ""
+
+#. type: Plain text
+#: ../E/extends.txt:31
+#, no-wrap
+msgid "Only public
and protected
members are inherited. private
members are directly inaccessible even for a child, although they can be accessed indirectly through inherited methods."
+msgstr ""
+
+#. type: Plain text
+#: ../E/extends.txt:33
+#, no-wrap
+msgid "Constructors and destructors are not inherited, however, they can be overriden."
+msgstr ""
+
+#. type: \b; header
+#: ../E/extends.txt:35
+#, no-wrap
+msgid "Method Overriding"
+msgstr ""
+
+#. type: Plain text
+#: ../E/extends.txt:36
+#, no-wrap
+msgid "Inherited methods can be overriden (redefined) in the child class definition. Example:"
+msgstr ""
+
+#. type: Source code
+#: ../E/extends.txt:38
+#, no-wrap
+msgid ""
+"public class Parent\n"
+"{\n"
+"\tvoid foo()\n"
+"\t{\n"
+"\t\tmessage(\"foo\");\n"
+"\t}\n"
+"}\n"
+"\n"
+"public class Child extends Parent\n"
+"{\n"
+"\tvoid foo()\n"
+"\t{\n"
+"\t\tmessage(\"bar\");\n"
+"\t}\n"
+"}\n"
+"\n"
+"extern void object::Test()\n"
+"{\n"
+"\tChild child();\n"
+"\tchild.foo(); // Will show \"bar\"\n"
+"}"
+msgstr ""
+
+#. type: \b; header
+#: ../E/extends.txt:62
+#, no-wrap
+msgid "Polymorphism"
+msgstr ""
+
+#. type: Plain text
+#: ../E/extends.txt:63
+#, no-wrap
+msgid "Reference
of type Parent can point to an object of type Child. However, such a pointer can't be used to access a child member. In order to access a child member, it must be assured that the Parent reference really points to a Child object. If that's the case, it can be safely copied to a pointer of type Child, which has access to the child members."
+msgstr ""
+
+#. type: Source code
+#: ../E/extends.txt:67
+#, no-wrap
+msgid ""
+"public class Parent\n"
+"{\n"
+"\tvoid foo()\n"
+"\t{\n"
+"\t\tmessage(\"foo\");\n"
+"\t}\n"
+"}\n"
+"\n"
+"public class Child extends Parent\n"
+"{\n"
+"\tvoid foo()\n"
+"\t{\n"
+"\t\tmessage(\"bar\");\n"
+"\t}\n"
+"\tvoid bar()\n"
+"\t{\n"
+"\t\tmessage(\"foo bar\");\n"
+"\t}\n"
+"}\n"
+"\n"
+"extern void object::Test()\n"
+"{\n"
+"\tParent people[2];\n"
+"\tpeople[0] = new Parent();\n"
+"\tpeople[1] = new Child();\n"
+"\tfor (int i = 0; i < 2; ++i)\n"
+"\t{\n"
+"\t\tpeople[i].foo();\n"
+"\t}\n"
+"\t//people[1].bar(); // Error\n"
+"\tChild child = people[1];\n"
+"\tchild.bar(); // OK\n"
+"}"
+msgstr ""
+
+#. type: \b; header
+#: ../E/extends.txt:102
+#, no-wrap
+msgid "Multiple Inheritance"
+msgstr ""
+
+#. type: Plain text
+#: ../E/extends.txt:103
+#, no-wrap
+msgid "A child cannot have multiple parents, however, a parent can have many children."
+msgstr ""
+
+#. type: Plain text
+#: ../E/extends.txt:106
+#, no-wrap
+msgid ""
+"class
, public
, private
, protected
, new
, reference
, this
, super
\n"
+"Programming, types and categories."
+msgstr ""
+
#. type: Plain text
#: ../E/super.txt:2
#, no-wrap
-msgid "This keyword is similar to this
, however, it grants access to methods from the parent class (see the extends
keyword), which is especially useful for method overwriting."
+msgid "This keyword is similar to this
, however, it grants access to methods from the parent class (see the extends
keyword), which is especially useful for method overriding."
msgstr ""
#. type: Source code
#: ../E/super.txt:6
#, no-wrap
msgid ""
-" public class Parent\n"
-" {\n"
+"public class Parent\n"
+"{\n"
"\tprotected int field;\n"
"\t\n"
"\tvoid Parent()\n"
@@ -8651,17 +8801,41 @@ msgid ""
msgstr ""
#. type: Plain text
-#: ../E/super.txt:46
+#: ../E/extends.txt:2
+#, no-wrap
+msgid "This keyword is used in a class
definition when we want the class to inherit members from another class. The class which is extended we usually call a parent or base, the extending class we call a child."
+msgstr ""
+
+#. type: Source code
+#: ../E/extends.txt:6
#, no-wrap
msgid ""
-"class
, this
\n"
-"Programming, types and categories."
+"public class Parent\n"
+"{\n"
+"\tvoid foo()\n"
+"\t{\n"
+"\t\tmessage(\"foo\");\n"
+"\t}\n"
+"}\n"
+"\n"
+"public class Child extends Parent\n"
+"{\n"
+"\tvoid bar()\n"
+"\t{\n"
+"\t\tmessage(\"bar\");\n"
+"\t}\n"
+"}\n"
+"\n"
+"extern void object::Test()\n"
+"{\n"
+"\tChild child();\n"
+"\tchild.foo(); // Will show \"foo\"\n"
+"\tchild.bar(); // Will show \"bar\"\n"
+"}"
msgstr ""
#. type: Plain text
-#: ../E/this.txt:53
+#: ../E/extends.txt:60
#, no-wrap
-msgid ""
-"class
, super
\n"
-"Programming, types and categories."
+msgid "A parent's method can be called inside an overriden method by using the super
keyword."
msgstr ""
diff --git a/help/cbot/po/ru.po b/help/cbot/po/ru.po
index 60777f2e..df907f65 100644
--- a/help/cbot/po/ru.po
+++ b/help/cbot/po/ru.po
@@ -53,7 +53,7 @@ msgid "Time in seconds."
msgstr ""
#. type: \t; header
-#: ../E/abstime.txt:10 ../E/acos.txt:11 ../E/aim.txt:23 ../E/array.txt:41 ../E/asin.txt:11 ../E/atan.txt:11 ../E/atan2.txt:16 ../E/bloc.txt:48 ../E/bool.txt:4 ../E/break.txt:24 ../E/build.txt:27 ../E/buildingenabled.txt:22 ../E/busy.txt:14 ../E/canbuild.txt:22 ../E/canresearch.txt:14 ../E/category.txt:109 ../E/ceil.txt:12 ../E/class.txt:120 ../E/close.txt:6 ../E/cond.txt:4 ../E/continue.txt:24 ../E/cos.txt:11 ../E/deletef.txt:9 ../E/delinfo.txt:13 ../E/destroy.txt:15 ../E/detect.txt:27 ../E/direct.txt:13 ../E/dist.txt:29 ../E/dist2d.txt:13 ../E/do.txt:27 ../E/drop.txt:28 ../E/eof.txt:13 ../E/errmode.txt:32 ../E/expr.txt:197 ../E/extern.txt:29 ../E/factory.txt:21 ../E/false.txt:4 ../E/file.txt:16 ../E/fire.txt:30 ../E/flatgrnd.txt:16 ../E/flatspace.txt:25 ../E/float.txt:24 ../E/floor.txt:12 ../E/for.txt:51 ../E/function.txt:129 ../E/goto.txt:34 ../E/grab.txt:28 ../E/if.txt:39 ../E/int.txt:18 ../E/jet.txt:14 ../E/message.txt:24 ../E/motor.txt:38 ../E/move.txt:21 ../E/nan.txt:14 ../E/new.txt:20 ../E/null.txt:4 ../E/object.txt:79 ../E/open.txt:18 ../E/openfile.txt:10 ../E/pencolor.txt:14 ../E/pendown.txt:17 ../E/penup.txt:11 ../E/penwidth.txt:14 ../E/point.txt:35 ../E/pointer.txt:51 ../E/pow.txt:14 ../E/private.txt:19 ../E/produce.txt:30 ../E/protected.txt:26 ../E/public.txt:49 ../E/radar.txt:80 ../E/radarall.txt:19 ../E/rand.txt:8 ../E/readln.txt:18 ../E/receive.txt:16 ../E/recycle.txt:12 ../E/research.txt:18 ../E/researched.txt:14 ../E/researches.txt:27 ../E/retobj.txt:13 ../E/return.txt:29 ../E/round.txt:12 ../E/search.txt:25 ../E/send.txt:17 ../E/shield.txt:18 ../E/sin.txt:11 ../E/sizeof.txt:21 ../E/sniff.txt:16 ../E/space.txt:22 ../E/sqrt.txt:11 ../E/static.txt:20 ../E/strfind.txt:18 ../E/string.txt:32 ../E/strleft.txt:14 ../E/strlen.txt:12 ../E/strlower.txt:10 ../E/strmid.txt:18 ../E/strright.txt:14 ../E/strupper.txt:10 ../E/strval.txt:17 ../E/super.txt:45 ../E/switch.txt:70 ../E/synchro.txt:23 ../E/takeoff.txt:15 ../E/tan.txt:11 ../E/term.txt:30 ../E/testinfo.txt:16 ../E/this.txt:52 ../E/thump.txt:12 ../E/topo.txt:13 ../E/true.txt:4 ../E/trunc.txt:12 ../E/turn.txt:32 ../E/type.txt:32 ../E/var.txt:66 ../E/void.txt:10 ../E/wait.txt:21 ../E/while.txt:46 ../E/writeln.txt:19
+#: ../E/abstime.txt:10 ../E/acos.txt:11 ../E/aim.txt:23 ../E/array.txt:41 ../E/asin.txt:11 ../E/atan.txt:11 ../E/atan2.txt:16 ../E/bloc.txt:48 ../E/bool.txt:4 ../E/break.txt:24 ../E/build.txt:27 ../E/buildingenabled.txt:22 ../E/busy.txt:14 ../E/canbuild.txt:22 ../E/canresearch.txt:14 ../E/category.txt:109 ../E/ceil.txt:12 ../E/class.txt:120 ../E/close.txt:6 ../E/cond.txt:4 ../E/continue.txt:24 ../E/cos.txt:11 ../E/deletef.txt:9 ../E/delinfo.txt:13 ../E/destroy.txt:15 ../E/detect.txt:27 ../E/direct.txt:13 ../E/dist.txt:29 ../E/dist2d.txt:13 ../E/do.txt:27 ../E/drop.txt:28 ../E/eof.txt:13 ../E/errmode.txt:32 ../E/expr.txt:197 ../E/extends.txt:105 ../E/extern.txt:29 ../E/factory.txt:21 ../E/false.txt:4 ../E/file.txt:16 ../E/fire.txt:30 ../E/flatgrnd.txt:16 ../E/flatspace.txt:25 ../E/float.txt:24 ../E/floor.txt:12 ../E/for.txt:51 ../E/function.txt:129 ../E/goto.txt:34 ../E/grab.txt:28 ../E/if.txt:39 ../E/int.txt:18 ../E/jet.txt:14 ../E/message.txt:24 ../E/motor.txt:38 ../E/move.txt:21 ../E/nan.txt:14 ../E/new.txt:20 ../E/null.txt:4 ../E/object.txt:79 ../E/open.txt:18 ../E/openfile.txt:10 ../E/pencolor.txt:14 ../E/pendown.txt:17 ../E/penup.txt:11 ../E/penwidth.txt:14 ../E/point.txt:35 ../E/pointer.txt:51 ../E/pow.txt:14 ../E/private.txt:19 ../E/produce.txt:30 ../E/protected.txt:26 ../E/public.txt:49 ../E/radar.txt:80 ../E/radarall.txt:19 ../E/rand.txt:8 ../E/readln.txt:18 ../E/receive.txt:16 ../E/recycle.txt:12 ../E/research.txt:18 ../E/researched.txt:14 ../E/researches.txt:27 ../E/retobj.txt:13 ../E/return.txt:29 ../E/round.txt:12 ../E/search.txt:25 ../E/send.txt:17 ../E/shield.txt:18 ../E/sin.txt:11 ../E/sizeof.txt:21 ../E/sniff.txt:16 ../E/space.txt:22 ../E/sqrt.txt:11 ../E/static.txt:20 ../E/strfind.txt:18 ../E/string.txt:32 ../E/strleft.txt:14 ../E/strlen.txt:12 ../E/strlower.txt:10 ../E/strmid.txt:18 ../E/strright.txt:14 ../E/strupper.txt:10 ../E/strval.txt:17 ../E/super.txt:45 ../E/switch.txt:70 ../E/synchro.txt:23 ../E/takeoff.txt:15 ../E/tan.txt:11 ../E/term.txt:30 ../E/testinfo.txt:16 ../E/this.txt:52 ../E/thump.txt:12 ../E/topo.txt:13 ../E/true.txt:4 ../E/trunc.txt:12 ../E/turn.txt:32 ../E/type.txt:32 ../E/var.txt:66 ../E/void.txt:10 ../E/wait.txt:21 ../E/while.txt:46 ../E/writeln.txt:19
#, no-wrap
msgid "See also"
msgstr "См. также"
@@ -7813,7 +7813,7 @@ msgid "Firstly, the condition is valued and then the first result is returned if
msgstr ""
#. type: \t; header
-#: ../E/expr.txt:157 ../E/private.txt:4 ../E/protected.txt:4 ../E/super.txt:4
+#: ../E/expr.txt:157 ../E/extends.txt:4 ../E/extends.txt:65 ../E/private.txt:4 ../E/protected.txt:4 ../E/super.txt:4
#, no-wrap
msgid "Example"
msgstr ""
@@ -8414,18 +8414,168 @@ msgstr ""
msgid "Keyword super
"
msgstr ""
+#. type: Plain text
+#: ../E/super.txt:46
+#, no-wrap
+msgid ""
+"class
, this
\n"
+"Programming, types and categories."
+msgstr ""
+
+#. type: Plain text
+#: ../E/this.txt:53
+#, no-wrap
+msgid ""
+"class
, super
\n"
+"Programming, types and categories."
+msgstr ""
+
+#. type: \b; header
+#: ../E/extends.txt:1
+#, no-wrap
+msgid "Keyword extends
"
+msgstr ""
+
+#. type: \b; header
+#: ../E/extends.txt:30
+#, no-wrap
+msgid "Inherited Members"
+msgstr ""
+
+#. type: Plain text
+#: ../E/extends.txt:31
+#, no-wrap
+msgid "Only public
and protected
members are inherited. private
members are directly inaccessible even for a child, although they can be accessed indirectly through inherited methods."
+msgstr ""
+
+#. type: Plain text
+#: ../E/extends.txt:33
+#, no-wrap
+msgid "Constructors and destructors are not inherited, however, they can be overriden."
+msgstr ""
+
+#. type: \b; header
+#: ../E/extends.txt:35
+#, no-wrap
+msgid "Method Overriding"
+msgstr ""
+
+#. type: Plain text
+#: ../E/extends.txt:36
+#, no-wrap
+msgid "Inherited methods can be overriden (redefined) in the child class definition. Example:"
+msgstr ""
+
+#. type: Source code
+#: ../E/extends.txt:38
+#, no-wrap
+msgid ""
+"public class Parent\n"
+"{\n"
+"\tvoid foo()\n"
+"\t{\n"
+"\t\tmessage(\"foo\");\n"
+"\t}\n"
+"}\n"
+"\n"
+"public class Child extends Parent\n"
+"{\n"
+"\tvoid foo()\n"
+"\t{\n"
+"\t\tmessage(\"bar\");\n"
+"\t}\n"
+"}\n"
+"\n"
+"extern void object::Test()\n"
+"{\n"
+"\tChild child();\n"
+"\tchild.foo(); // Will show \"bar\"\n"
+"}"
+msgstr ""
+
+#. type: \b; header
+#: ../E/extends.txt:62
+#, no-wrap
+msgid "Polymorphism"
+msgstr ""
+
+#. type: Plain text
+#: ../E/extends.txt:63
+#, no-wrap
+msgid "Reference
of type Parent can point to an object of type Child. However, such a pointer can't be used to access a child member. In order to access a child member, it must be assured that the Parent reference really points to a Child object. If that's the case, it can be safely copied to a pointer of type Child, which has access to the child members."
+msgstr ""
+
+#. type: Source code
+#: ../E/extends.txt:67
+#, no-wrap
+msgid ""
+"public class Parent\n"
+"{\n"
+"\tvoid foo()\n"
+"\t{\n"
+"\t\tmessage(\"foo\");\n"
+"\t}\n"
+"}\n"
+"\n"
+"public class Child extends Parent\n"
+"{\n"
+"\tvoid foo()\n"
+"\t{\n"
+"\t\tmessage(\"bar\");\n"
+"\t}\n"
+"\tvoid bar()\n"
+"\t{\n"
+"\t\tmessage(\"foo bar\");\n"
+"\t}\n"
+"}\n"
+"\n"
+"extern void object::Test()\n"
+"{\n"
+"\tParent people[2];\n"
+"\tpeople[0] = new Parent();\n"
+"\tpeople[1] = new Child();\n"
+"\tfor (int i = 0; i < 2; ++i)\n"
+"\t{\n"
+"\t\tpeople[i].foo();\n"
+"\t}\n"
+"\t//people[1].bar(); // Error\n"
+"\tChild child = people[1];\n"
+"\tchild.bar(); // OK\n"
+"}"
+msgstr ""
+
+#. type: \b; header
+#: ../E/extends.txt:102
+#, no-wrap
+msgid "Multiple Inheritance"
+msgstr ""
+
+#. type: Plain text
+#: ../E/extends.txt:103
+#, no-wrap
+msgid "A child cannot have multiple parents, however, a parent can have many children."
+msgstr ""
+
+#. type: Plain text
+#: ../E/extends.txt:106
+#, no-wrap
+msgid ""
+"class
, public
, private
, protected
, new
, reference
, this
, super
\n"
+"Programming, types and categories."
+msgstr ""
+
#. type: Plain text
#: ../E/super.txt:2
#, no-wrap
-msgid "This keyword is similar to this
, however, it grants access to methods from the parent class (see the extends
keyword), which is especially useful for method overwriting."
+msgid "This keyword is similar to this
, however, it grants access to methods from the parent class (see the extends
keyword), which is especially useful for method overriding."
msgstr ""
#. type: Source code
#: ../E/super.txt:6
#, no-wrap
msgid ""
-" public class Parent\n"
-" {\n"
+"public class Parent\n"
+"{\n"
"\tprotected int field;\n"
"\t\n"
"\tvoid Parent()\n"
@@ -8464,17 +8614,41 @@ msgid ""
msgstr ""
#. type: Plain text
-#: ../E/super.txt:46
+#: ../E/extends.txt:2
+#, no-wrap
+msgid "This keyword is used in a class
definition when we want the class to inherit members from another class. The class which is extended we usually call a parent or base, the extending class we call a child."
+msgstr ""
+
+#. type: Source code
+#: ../E/extends.txt:6
#, no-wrap
msgid ""
-"class
, this
\n"
-"Programming, types and categories."
+"public class Parent\n"
+"{\n"
+"\tvoid foo()\n"
+"\t{\n"
+"\t\tmessage(\"foo\");\n"
+"\t}\n"
+"}\n"
+"\n"
+"public class Child extends Parent\n"
+"{\n"
+"\tvoid bar()\n"
+"\t{\n"
+"\t\tmessage(\"bar\");\n"
+"\t}\n"
+"}\n"
+"\n"
+"extern void object::Test()\n"
+"{\n"
+"\tChild child();\n"
+"\tchild.foo(); // Will show \"foo\"\n"
+"\tchild.bar(); // Will show \"bar\"\n"
+"}"
msgstr ""
#. type: Plain text
-#: ../E/this.txt:53
+#: ../E/extends.txt:60
#, no-wrap
-msgid ""
-"class
, super
\n"
-"Programming, types and categories."
+msgid "A parent's method can be called inside an overriden method by using the super
keyword."
msgstr ""
diff --git a/help/generic/E/cbot.txt b/help/generic/E/cbot.txt
index aa9cad0f..9e2455be 100644
--- a/help/generic/E/cbot.txt
+++ b/help/generic/E/cbot.txt
@@ -91,7 +91,8 @@ Constants like \l;categories\u cbot\category; are displayed like that: \const;co
\c;\l;synchronized\u cbot\synchro; \n;Prevents simultaneous execution
\c;\l;new\u cbot\new; \n;Creates a new instance
\c;\l;this\u cbot\this; \n;Reference to the current instance
-\c;\l;super\u cbot\super; \n;Grants access to the parrent class
+\c;\l;extends\u cbot\extends; \n;Extends a class
+\c;\l;super\u cbot\super; \n;Grants access to the parent class
\t;Specific instructions for strings:
\c;\l;strlen\u cbot\strlen; \n;Gets string length
diff --git a/help/generic/po/de.po b/help/generic/po/de.po
index 7526344f..c8c92f91 100644
--- a/help/generic/po/de.po
+++ b/help/generic/po/de.po
@@ -125,13 +125,13 @@ msgid "Specific instructions for classes:"
msgstr "Befehle für die Verwaltung von Klassen:"
#. type: \t; header
-#: ../E/cbot.txt:96
+#: ../E/cbot.txt:97
#, no-wrap
msgid "Specific instructions for strings:"
msgstr "Befehle für die Verarbeitung von Strings (Zeichenketten):"
#. type: Plain text
-#: ../E/cbot.txt:97
+#: ../E/cbot.txt:98
#, no-wrap
msgid ""
"strlen
Gets string length\n"
@@ -153,13 +153,13 @@ msgstr ""
"strlower
Umwandlung in Kleinbuchstaben"
#. type: \t; header
-#: ../E/cbot.txt:106
+#: ../E/cbot.txt:107
#, no-wrap
msgid "Specific instructions for files:"
msgstr "Befehle für die Dateiverwaltung:"
#. type: Plain text
-#: ../E/cbot.txt:107
+#: ../E/cbot.txt:108
#, no-wrap
msgid ""
"open
Opens a file\n"
@@ -177,13 +177,13 @@ msgstr ""
"deletefile
Löscht eine Datei"
#. type: \t; header
-#: ../E/battles.txt:53 ../E/cbot.txt:130 ../E/freehelp.txt:4
+#: ../E/battles.txt:53 ../E/cbot.txt:131 ../E/freehelp.txt:4
#, no-wrap
msgid "See also"
msgstr "Siehe auch"
#. type: Plain text
-#: ../E/cbot.txt:131
+#: ../E/cbot.txt:132
#, no-wrap
msgid "Types and categories."
msgstr "Variablentypen und Kategorien."
@@ -660,13 +660,13 @@ msgid ""
msgstr ""
#. type: \t; header
-#: ../E/cbot.txt:114
+#: ../E/cbot.txt:115
#, no-wrap
msgid "Mathematical functions:"
msgstr ""
#. type: Plain text
-#: ../E/cbot.txt:115
+#: ../E/cbot.txt:116
#, no-wrap
msgid ""
"rand
Returns a random value\n"
@@ -1087,5 +1087,6 @@ msgid ""
"synchronized
Prevents simultaneous execution\n"
"new
Creates a new instance\n"
"this
Reference to the current instance\n"
-"super
Grants access to the parrent class"
+"extends
Extends a class\n"
+"super
Grants access to the parent class"
msgstr ""
diff --git a/help/generic/po/fr.po b/help/generic/po/fr.po
index 98dbb7bf..b1f42f95 100644
--- a/help/generic/po/fr.po
+++ b/help/generic/po/fr.po
@@ -136,13 +136,13 @@ msgid "Specific instructions for classes:"
msgstr "Instructions pour les classes:"
#. type: \t; header
-#: ../E/cbot.txt:96
+#: ../E/cbot.txt:97
#, no-wrap
msgid "Specific instructions for strings:"
msgstr "Instructions pour les chaînes de caractères:"
#. type: Plain text
-#: ../E/cbot.txt:97
+#: ../E/cbot.txt:98
#, no-wrap
msgid ""
"strlen
Gets string length\n"
@@ -164,13 +164,13 @@ msgstr ""
"strlower
Convertit en minuscules."
#. type: \t; header
-#: ../E/cbot.txt:106
+#: ../E/cbot.txt:107
#, no-wrap
msgid "Specific instructions for files:"
msgstr "Instructions pour les fichiers:"
#. type: Plain text
-#: ../E/cbot.txt:107
+#: ../E/cbot.txt:108
#, no-wrap
msgid ""
"open
Opens a file\n"
@@ -188,13 +188,13 @@ msgstr ""
"deletefile
Supprime un fichier"
#. type: \t; header
-#: ../E/battles.txt:53 ../E/cbot.txt:130 ../E/freehelp.txt:4
+#: ../E/battles.txt:53 ../E/cbot.txt:131 ../E/freehelp.txt:4
#, no-wrap
msgid "See also"
msgstr "Voir aussi"
#. type: Plain text
-#: ../E/cbot.txt:131
+#: ../E/cbot.txt:132
#, no-wrap
msgid "Types and categories."
msgstr "Types et catégories."
@@ -672,13 +672,13 @@ msgid ""
msgstr ""
#. type: \t; header
-#: ../E/cbot.txt:114
+#: ../E/cbot.txt:115
#, no-wrap
msgid "Mathematical functions:"
msgstr "Fonctions mathématiques:"
#. type: Plain text
-#: ../E/cbot.txt:115
+#: ../E/cbot.txt:116
#, no-wrap
msgid ""
"rand
Returns a random value\n"
@@ -1101,5 +1101,6 @@ msgid ""
"synchronized
Prevents simultaneous execution\n"
"new
Creates a new instance\n"
"this
Reference to the current instance\n"
-"super
Grants access to the parrent class"
+"extends
Extends a class\n"
+"super
Grants access to the parent class"
msgstr ""
diff --git a/help/generic/po/generic.pot b/help/generic/po/generic.pot
index 23058cb9..1890ee66 100644
--- a/help/generic/po/generic.pot
+++ b/help/generic/po/generic.pot
@@ -119,13 +119,13 @@ msgid "Specific instructions for classes:"
msgstr ""
#. type: \t; header
-#: ../E/cbot.txt:96
+#: ../E/cbot.txt:97
#, no-wrap
msgid "Specific instructions for strings:"
msgstr ""
#. type: Plain text
-#: ../E/cbot.txt:97
+#: ../E/cbot.txt:98
#, no-wrap
msgid ""
"strlen
Gets string length\n"
@@ -139,13 +139,13 @@ msgid ""
msgstr ""
#. type: \t; header
-#: ../E/cbot.txt:106
+#: ../E/cbot.txt:107
#, no-wrap
msgid "Specific instructions for files:"
msgstr ""
#. type: Plain text
-#: ../E/cbot.txt:107
+#: ../E/cbot.txt:108
#, no-wrap
msgid ""
"open
Opens a file\n"
@@ -157,13 +157,13 @@ msgid ""
msgstr ""
#. type: \t; header
-#: ../E/battles.txt:53 ../E/cbot.txt:130 ../E/freehelp.txt:4
+#: ../E/battles.txt:53 ../E/cbot.txt:131 ../E/freehelp.txt:4
#, no-wrap
msgid "See also"
msgstr ""
#. type: Plain text
-#: ../E/cbot.txt:131
+#: ../E/cbot.txt:132
#, no-wrap
msgid "Types and categories."
msgstr ""
@@ -602,13 +602,13 @@ msgid ""
msgstr ""
#. type: \t; header
-#: ../E/cbot.txt:114
+#: ../E/cbot.txt:115
#, no-wrap
msgid "Mathematical functions:"
msgstr ""
#. type: Plain text
-#: ../E/cbot.txt:115
+#: ../E/cbot.txt:116
#, no-wrap
msgid ""
"rand
Returns a random value\n"
@@ -1029,5 +1029,6 @@ msgid ""
"synchronized
Prevents simultaneous execution\n"
"new
Creates a new instance\n"
"this
Reference to the current instance\n"
-"super
Grants access to the parrent class"
+"extends
Extends a class\n"
+"super
Grants access to the parent class"
msgstr ""
diff --git a/help/generic/po/pl.po b/help/generic/po/pl.po
index 2f6089eb..7e464a21 100644
--- a/help/generic/po/pl.po
+++ b/help/generic/po/pl.po
@@ -139,13 +139,13 @@ msgid "Specific instructions for classes:"
msgstr "Instrukcje specyficzne dla klas:"
#. type: \t; header
-#: ../E/cbot.txt:96
+#: ../E/cbot.txt:97
#, no-wrap
msgid "Specific instructions for strings:"
msgstr "Instrukcje specyficzne dla łańcuchów:"
#. type: Plain text
-#: ../E/cbot.txt:97
+#: ../E/cbot.txt:98
#, no-wrap
msgid ""
"strlen
Gets string length\n"
@@ -167,13 +167,13 @@ msgstr ""
"strlower
Zamienia litery na małe"
#. type: \t; header
-#: ../E/cbot.txt:106
+#: ../E/cbot.txt:107
#, no-wrap
msgid "Specific instructions for files:"
msgstr "Instrukcje specyficzne dla plików:"
#. type: Plain text
-#: ../E/cbot.txt:107
+#: ../E/cbot.txt:108
#, no-wrap
msgid ""
"open
Opens a file\n"
@@ -191,13 +191,13 @@ msgstr ""
"deletefile
Usuwa plik"
#. type: \t; header
-#: ../E/battles.txt:53 ../E/cbot.txt:130 ../E/freehelp.txt:4
+#: ../E/battles.txt:53 ../E/cbot.txt:131 ../E/freehelp.txt:4
#, no-wrap
msgid "See also"
msgstr "Zobacz również"
#. type: Plain text
-#: ../E/cbot.txt:131
+#: ../E/cbot.txt:132
#, no-wrap
msgid "Types and categories."
msgstr "Typy i kategorie."
@@ -709,13 +709,13 @@ msgstr ""
"busy
Sprawdza czy obiekt jest zajęty"
#. type: \t; header
-#: ../E/cbot.txt:114
+#: ../E/cbot.txt:115
#, no-wrap
msgid "Mathematical functions:"
msgstr "Funkcje matematyczne:"
#. type: Plain text
-#: ../E/cbot.txt:115
+#: ../E/cbot.txt:116
#, no-wrap
msgid ""
"rand
Returns a random value\n"
@@ -1180,5 +1180,6 @@ msgid ""
"synchronized
Prevents simultaneous execution\n"
"new
Creates a new instance\n"
"this
Reference to the current instance\n"
-"super
Grants access to the parrent class"
+"extends
Extends a class\n"
+"super
Grants access to the parent class"
msgstr ""
diff --git a/help/generic/po/ru.po b/help/generic/po/ru.po
index 1e6afd97..99d20f08 100644
--- a/help/generic/po/ru.po
+++ b/help/generic/po/ru.po
@@ -131,13 +131,13 @@ msgid "Specific instructions for classes:"
msgstr ""
#. type: \t; header
-#: ../E/cbot.txt:96
+#: ../E/cbot.txt:97
#, no-wrap
msgid "Specific instructions for strings:"
msgstr ""
#. type: Plain text
-#: ../E/cbot.txt:97
+#: ../E/cbot.txt:98
#, no-wrap
msgid ""
"strlen
Gets string length\n"
@@ -151,13 +151,13 @@ msgid ""
msgstr ""
#. type: \t; header
-#: ../E/cbot.txt:106
+#: ../E/cbot.txt:107
#, no-wrap
msgid "Specific instructions for files:"
msgstr ""
#. type: Plain text
-#: ../E/cbot.txt:107
+#: ../E/cbot.txt:108
#, no-wrap
msgid ""
"open
Opens a file\n"
@@ -169,13 +169,13 @@ msgid ""
msgstr ""
#. type: \t; header
-#: ../E/battles.txt:53 ../E/cbot.txt:130 ../E/freehelp.txt:4
+#: ../E/battles.txt:53 ../E/cbot.txt:131 ../E/freehelp.txt:4
#, no-wrap
msgid "See also"
msgstr "См. также"
#. type: Plain text
-#: ../E/cbot.txt:131
+#: ../E/cbot.txt:132
#, no-wrap
msgid "Types and categories."
msgstr ""
@@ -640,13 +640,13 @@ msgid ""
msgstr ""
#. type: \t; header
-#: ../E/cbot.txt:114
+#: ../E/cbot.txt:115
#, no-wrap
msgid "Mathematical functions:"
msgstr ""
#. type: Plain text
-#: ../E/cbot.txt:115
+#: ../E/cbot.txt:116
#, no-wrap
msgid ""
"rand
Returns a random value\n"
@@ -1067,5 +1067,6 @@ msgid ""
"synchronized
Prevents simultaneous execution\n"
"new
Creates a new instance\n"
"this
Reference to the current instance\n"
-"super
Grants access to the parrent class"
+"extends
Extends a class\n"
+"super
Grants access to the parent class"
msgstr ""