Komolytalan#29
JAVA int példa nagyon rossz. Attól hogy valamiben nem úgy lehet összeadni kettőt meg kettőt, hogy
Integer b=new Integer(2).add(2)
hanem
int b=2+2
attól a nyelv csak használható (sebességű) lesz, de nem veszíti el az OOP mivoltát.
Viszont nézzünk egy apró OOP kódot - ezt hogy valósítanád meg JS-ben? Azért AS3 a kód, mert az AS1 ugyanarra az ECMA-262 szabványra épült (ezelőtt 15 évvel) mint a JS. De írhattam volna JAVA-ban vagy C#-ban is - aki bármely nyelvet ismeri, az láthatja, hogy minimálisak a különbségek: function/var töröl, :int a sor végén helyett int a sor elejére - szóval csupa apróság. Komolyan érdekelne hogy mindez hogy nézne ki JS-ben szerinted. És most légyszi ne 200 sor wikipédiás technoblablát, hanem konkrét kódot prezentálj.
Parent.as:
package {
public class Base {
private static var nextId:int=1;
protected var id:int;
public function Base() {
id=nextId++;
}
protected function calc( value:int ):int {
return 2*value;
}
public function get value():int {
return calc( id );
}
}
}
Child.as
package {
public class Child extends Base {
override protected function calc( value:int ):int {
return super.calc( value )+1;
}
}
}
A főprogram (Main.as):
package {
import flash.display.MovieClip;
public class Main extends MovieClip {
var c:Child=new Child();
var p:Parent=new Parent();
trace( c.id )
// Fordítási hiba - innen nem látható
trace( c.calc( 1 ) );
// Fordítási hiba - innen nem látható
trace( c.value );
// (2*1)+1=3
trace( p.value );
// (2*2)=4
}
}