Jump to content

Inheritance/Single: Difference between revisions

m
m (→‎{{header|Wren}}: Changed to Wren S/H)
 
(19 intermediate revisions by the same user not shown)
Line 84:
 
=={{header|ActionScript}}==
<syntaxhighlight lang="actionscript">public class Animal {
public class Animal {
// ...
}
}</syntaxhighlight>
<syntaxhighlight lang="actionscript">public class Cat extends Animal {
// ...
}
}</syntaxhighlight>
<syntaxhighlight lang="actionscript">public class Dog extends Animal {
// ...
}
}</syntaxhighlight>
<syntaxhighlight lang="actionscript">public class Lab extends Dog {
// ...
}
}</syntaxhighlight>
<syntaxhighlight lang="actionscript">public class Collie extends Dog {
// ...
}</syntaxhighlight>
Line 116 ⟶ 117:
 
=={{header|Aikido}}==
<syntaxhighlight lang="aikido ">class Animal{
class Animal{
//functions go here...
}
}</syntaxhighlight>
<syntaxhighlight lang="aikido ">class Dog extends Animal {
//functions go here...
}
}</syntaxhighlight>
<syntaxhighlight lang="aikido ">class Cat extends Animal {
//functions go here...
}
}</syntaxhighlight>
<syntaxhighlight lang="aikido ">class Lab extends Dog {
//functions go here...
}
}</syntaxhighlight>
<syntaxhighlight lang="aikido ">class Collie extends Dog {
//functions go here...
}
}</syntaxhighlight>
</syntaxhighlight>
 
=={{header|AmigaE}}==
Line 274 ⟶ 277:
 
=={{header|ChucK}}==
<syntaxhighlight lang="chuck">public class Drums{
public class Drums{
//functions go here...
}
}</syntaxhighlight>
<syntaxhighlight lang="chuck">public class LatinKit extends Drums{
//functions go here...
}
}</syntaxhighlight>
<syntaxhighlight lang="chuck">public class ElectronicKit extends Drums{
//functions go here...
}
}</syntaxhighlight>
<syntaxhighlight lang="chuck">public class Congas extends LatinKit{
//functions go here...
}
}</syntaxhighlight>
<syntaxhighlight lang="chuck">public class TechnoDrums extends ElectronicKit{
//functions go here...
}
}</syntaxhighlight>
</syntaxhighlight>
 
=={{header|Clojure}}==
Line 605 ⟶ 610:
 
=={{header|Eiffel}}==
<syntaxhighlight lang="eiffel ">class
class
ANIMAL
end
end</syntaxhighlight>
class
<syntaxhighlight lang="eiffel ">class
DOG
inherit
ANIMAL
end
end</syntaxhighlight>
class
<syntaxhighlight lang="eiffel ">class
CAT
inherit
ANIMAL
end
end</syntaxhighlight>
class
<syntaxhighlight lang="eiffel ">class
LAB
inherit
DOG
end
end</syntaxhighlight>
class
<syntaxhighlight lang="eiffel ">class
COLLIE
inherit
DOG
end
end</syntaxhighlight>
</syntaxhighlight>
 
=={{header|Elena}}==
Line 857 ⟶ 864:
 
=={{header|Groovy}}==
<syntaxhighlight lang="groovy">class Animal{
class Animal{
//contents go here...
}
}</syntaxhighlight>
<syntaxhighlight lang="groovy">class Dog extends Animal{
//contents go here...
}
}</syntaxhighlight>
<syntaxhighlight lang="groovy">class Cat extends Animal{
//contents go here...
}
}</syntaxhighlight>
<syntaxhighlight lang="groovy">class Lab extends Dog{
//contents go here...
}
}</syntaxhighlight>
<syntaxhighlight lang="groovy">class Collie extends Dog{
//contents go here...
}
}</syntaxhighlight>
</syntaxhighlight>
 
=={{header|Haskell}}==
Line 883 ⟶ 892:
 
=={{header|Haxe}}==
<syntaxhighlight lang="haxe">class Animal {
class Animal {
// ...
}
}</syntaxhighlight>
<syntaxhighlight lang="haxe">class Cat extends Animal {
// ...
}
}</syntaxhighlight>
<syntaxhighlight lang="haxe">class Dog extends Animal {
// ...
}
}</syntaxhighlight>
<syntaxhighlight lang="haxe">class Lab extends Dog {
// ...
}
}</syntaxhighlight>
<syntaxhighlight lang="haxe">class Collie extends Dog {
// ...
}
}</syntaxhighlight>
</syntaxhighlight>
 
== Icon and {{header|Unicon}} ==
Line 941 ⟶ 952:
Here is how this would normally be done:
 
<syntaxhighlight lang="j">coclass 'Animal'</syntaxhighlight>
<syntaxhighlight lang="j">coclass 'DogAnimal'
coclass 'Dog'
coinsert 'Animal'</syntaxhighlight>
coinsert 'Animal'
<syntaxhighlight lang="j">coclass 'Cat'
coclass 'Cat'
coinsert 'Animal'</syntaxhighlight>
coinsert 'Animal'
<syntaxhighlight lang="j">coclass 'Lab'
coclass 'Lab'
coinsert 'Dog'</syntaxhighlight>
coinsert 'Dog'
<syntaxhighlight lang="j">coclass 'Collie'
coclass 'Collie'
coinsert 'Dog'</syntaxhighlight>
coinsert 'Dog'
</syntaxhighlight>
 
<code>coclass</code> specifies that following definitions will be within the named class, and <code>coinsert</code> specifies that the current class will inherit from the named classes (or object -- in J the only difference between a class and an object is its name and how you can create them -- this motivates the "co" prefix on operations which manipulate '''c'''lasses and '''o'''bjects).
Line 965 ⟶ 978:
 
=={{header|Java}}==
<syntaxhighlight lang="java">public class Animal{
public class Animal{
//functions go here...
}
}</syntaxhighlight>
<syntaxhighlight lang="java">public class Dog extends Animal{
//functions go here...
}
}</syntaxhighlight>
<syntaxhighlight lang="java">public class Cat extends Animal{
//functions go here...
}
}</syntaxhighlight>
<syntaxhighlight lang="java">public class Lab extends Dog{
//functions go here...
}
}</syntaxhighlight>
<syntaxhighlight lang="java">public class Collie extends Dog{
//functions go here...
}
}</syntaxhighlight>
</syntaxhighlight>
 
=={{header|JavaScript}}==
JavaScript is a class-free, object-oriented language, and as such, it uses prototypal inheritance instead of classical inheritance.
<syntaxhighlight lang="javascript">function Animal() {
function Animal() {
// ...
}
}</syntaxhighlight>
 
<syntaxhighlight lang="javascript">function Dog() {
// ...
}
Dog.prototype = new Animal();</syntaxhighlight>
 
<syntaxhighlight lang="javascript">function Cat() {
// ...
}
Cat.prototype = new Animal();</syntaxhighlight>
 
<syntaxhighlight lang="javascript">function Collie() {
// ...
}
Collie.prototype = new Dog();</syntaxhighlight>
 
<syntaxhighlight lang="javascript">function Lab() {
// ...
}
Lab.prototype = new Dog();</syntaxhighlight>
 
<syntaxhighlight lang="javascript">Animal.prototype.speak = function() {print("an animal makes a sound")};
 
var lab = new Lab();
lab.speak(); // shows "an animal makes a sound"</syntaxhighlight>
</syntaxhighlight>
 
=={{header|Julia}}==
Line 1,139 ⟶ 1,156:
=={{header|Lingo}}==
In Lingo Classes are represented by "parent scripts". Instead of using new() as in the code below, child classes can also use rawNew() when creating an instance of their parent classes. rawNew() creates an instance of a class without calling its initialization function 'new' (constructor).
<syntaxhighlight lang="lingo">-- parent script "Animal"
-- parent script "Animal"
-- ...</syntaxhighlight>
-- ...
 
<syntaxhighlight lang="lingo">-- parent script "Dog"
property ancestor
 
Line 1,148 ⟶ 1,166:
me.ancestor = script("Animal").new()
return me
end
end</syntaxhighlight>
<syntaxhighlight lang="lingo">-- parent script "Cat"
property ancestor
 
Line 1,156 ⟶ 1,174:
me.ancestor = script("Animal").new()
return me
end
end</syntaxhighlight>
 
<syntaxhighlight lang="lingo">-- parent script "Lab"
property ancestor
 
Line 1,164 ⟶ 1,182:
me.ancestor = script("Dog").new()
return me
end
end</syntaxhighlight>
 
<syntaxhighlight lang="lingo">-- parent script "Collie"
property ancestor
 
Line 1,172 ⟶ 1,190:
me.ancestor = script("Dog").new()
return me
end
end</syntaxhighlight>
</syntaxhighlight>
 
=={{header|Lisaac}}==
<syntaxhighlight lang="lisaac">Section Header
Section Header
+ name := ANIMAL;
// ...</syntaxhighlight>
<syntaxhighlight lang="lisaac">Section Header
+ name := CAT;
Section Inherit
- parent : ANIMAL := ANIMAL;
// ...</syntaxhighlight>
<syntaxhighlight lang="lisaac">Section Header
+ name := DOG;
Section Inherit
- parent : ANIMAL := ANIMAL;
// ...</syntaxhighlight>
<syntaxhighlight lang="lisaac">Section Header
+ name := LAB;
Section Inherit
- parent : DOG := DOG;
// ...</syntaxhighlight>
<syntaxhighlight lang="lisaac">Section Header
+ name := COLLIE;
Section Inherit
- parent : DOG := DOG;
// ...</syntaxhighlight>
</syntaxhighlight>
 
=={{header|Logtalk}}==
Line 1,504 ⟶ 1,525:
 
=={{header|OCaml}}==
<syntaxhighlight lang="ocaml">class animal =
class animal =
object (self)
(*functions go here...*)
end</syntaxhighlight>
<syntaxhighlight lang="ocaml">class dog =
object (self)
inherit animal
(*functions go here...*)
end</syntaxhighlight>
<syntaxhighlight lang="ocaml">class cat =
object (self)
inherit animal
(*functions go here...*)
end</syntaxhighlight>
<syntaxhighlight lang="ocaml">class lab =
object (self)
inherit dog
(*functions go here...*)
end</syntaxhighlight>
<syntaxhighlight lang="ocaml">class collie =
object (self)
inherit dog
(*functions go here...*)
end</syntaxhighlight>
</syntaxhighlight>
 
=={{header|Odin}}==
Line 1,654 ⟶ 1,677:
=={{header|Perl}}==
 
<syntaxhighlight lang="perl">package Animal;
package Animal;
#functions go here...
1;
1;</syntaxhighlight>
 
<syntaxhighlight lang="perl">package Dog;
use Animal;
@ISA = qw( Animal );
#functions go here...
1;
1;</syntaxhighlight>
 
<syntaxhighlight lang="perl">package Cat;
use Animal;
@ISA = qw( Animal );
#functions go here...
1;
1;</syntaxhighlight>
 
<syntaxhighlight lang="perl">package Lab;
use Dog;
@ISA = qw( Dog );
#functions go here...
1;
1;</syntaxhighlight>
 
<syntaxhighlight lang="perl">package Collie;
use Dog;
@ISA = qw( Dog );
#functions go here...
1;
1;</syntaxhighlight>
 
# The same using the [http://search.cpan.org/perldoc?MooseX::Declare MooseX::Declare] module:
 
<syntaxhighlight lang="perl">use MooseX::Declare;
 
class Animal {
Line 1,700 ⟶ 1,724:
class Collie extends Dog {
# methods go here...
}
}</syntaxhighlight>
</syntaxhighlight>
 
=={{header|Phix}}==
{{libheader|Phix/Class}}
Add (private|public) fields and methods as needed. Make Animal and Dog abstract (ie use "abstract class") to prevent instantiation.
<!--<syntaxhighlight lang="phix">(notonline)-->
<syntaxhighlight lang="phix">
<span style="color: #008080;">without</span> <span style="color: #008080;">js</span> <span style="color: #000080;font-style:italic;">-- (class)</span>
without js -- (class)
<span style="color: #008080;">class</span> <span style="color: #000000;">Animal</span>
class Animal
<span style="color: #008080;">private</span> <span style="color: #004080;">string</span> <span style="color: #000000;">species</span>
private string species
<span style="color: #008080;">end</span> <span style="color: #008080;">class</span>
end class
<span style="color: #008080;">class</span> <span style="color: #000000;">Dog</span> <span style="color: #008080;">extends</span> <span style="color: #000000;">Animal</span>
class Dog extends Animal
<span style="color: #008080;">public</span> <span style="color: #008080;">procedure</span> <span style="color: #000000;">bark</span><span style="color: #0000FF;">()</span>
public procedure bark()
<span style="color: #7060A8;">puts</span><span style="color: #0000FF;">(</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span><span style="color: #008000;">"woof\n"</span><span style="color: #0000FF;">)</span>
puts(1,"woof\n")
<span style="color: #008080;">end</span> <span style="color: #008080;">procedure</span>
end procedure
<span style="color: #008080;">end</span> <span style="color: #008080;">class</span>
end class
<span style="color: #008080;">class</span> <span style="color: #000000;">Lab</span> <span style="color: #008080;">extends</span> <span style="color: #000000;">Dog</span> <span style="color: #008080;">end</span> <span style="color: #008080;">class</span>
class Lab extends Dog end class
<span style="color: #008080;">class</span> <span style="color: #000000;">Collie</span> <span style="color: #008080;">extends</span> <span style="color: #000000;">Dog</span> <span style="color: #008080;">end</span> <span style="color: #008080;">class</span>
class Collie extends Dog end class
<span style="color: #008080;">class</span> <span style="color: #000000;">Cat</span> <span style="color: #008080;">extends</span> <span style="color: #000000;">Animal</span> <span style="color: #008080;">end</span> <span style="color: #008080;">class</span>
class Cat extends Animal end class
<!--</syntaxhighlight>-->
</syntaxhighlight>
 
=={{header|PHP}}==
Line 2,065 ⟶ 2,091:
=={{header|Self}}==
Self is a class-free, object-oriented language, and as such, it uses prototypal inheritance instead of classical inheritance. This is an example of the relevant excerpts from a Self transporter fileout. Normally the object tree would be built and navigated within the graphical Self environment.
<syntaxhighlight lang="self">animal = ()</syntaxhighlight>
animal = ()
<syntaxhighlight lang="self">dog = (| parent* = animal |)</syntaxhighlight>
<syntaxhighlight lang="self">catdog = (| parent* = animal |)</syntaxhighlight>
<syntaxhighlight lang="self">labcat = (| parent* = doganimal |)</syntaxhighlight>
<syntaxhighlight lang="self">collielab = (| parent* = dog |)</syntaxhighlight>
collie = (| parent* = dog |)
</syntaxhighlight>
 
=={{header|Sidef}}==
7,794

edits

Cookies help us deliver our services. By using our services, you agree to our use of cookies.