オレにだって…アクセスできないことぐらい…ある…
できなさそうでできるものと、できそうでできなかったもの。
♥0 |
Line 53 |
Modified 2010-12-21 21:21:58 |
MIT License
archived:2017-03-20 11:14:58
ActionScript3 source code
/**
* Copyright o8que ( http://wonderfl.net/user/o8que )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/eOgc
*/
// @see http://wonderfl.net/c/4PgI
package {
import flash.display.Sprite;
public class Main extends Sprite {
public function Main() {
var a1:A = new A();
var a2:A = new A();
a1.callFuncA(a2); // ok
var c1:C = new C();
var c2:C = new C();
var d1:D = new D();
var d2:D = new D();
c1.callFuncBOfB_1(c2 as B); // error
c1.callFuncBOfB_2(c2 as B); // ok
c1.callFuncBOfC_1(c2); // ok
c1.callFuncBOfC_2(c2); // ok
c1.callFuncBOfB_1(d2 as B); // error
c1.callFuncBOfB_2(d2 as B); // ok
c1.callFuncBOfD_1(d2); // error
c1.callFuncBOfD_2(d2); // ok
d1.callFuncBOfB_1(c2 as B); // ok
d1.callFuncBOfB_2(c2 as B); // error
d1.callFuncBOfC_1(c2); // ok
d1.callFuncBOfC_2(c2); // error
d1.callFuncBOfB_1(d2 as B); // ok
d1.callFuncBOfB_2(d2 as B); // error
d1.callFuncBOfD_1(d2); // ok
d1.callFuncBOfD_2(d2); // ok
}
}
}
class A {
private function funcA():void { }
public function callFuncA(a:A):void { a.funcA(); }
}
class B {
protected function funcB():void { }
public function callFuncBOfB_1(b:B):void { b.funcB(); }
public function callFuncBOfC_1(c:C):void { c.funcB(); }
public function callFuncBOfD_1(d:D):void { d.funcB(); }
}
class C extends B {
public override function callFuncBOfB_1(b:B):void { b.funcB(); }
public override function callFuncBOfC_1(c:C):void { c.funcB(); }
public override function callFuncBOfD_1(d:D):void { d.funcB(); }
public function callFuncBOfB_2(b:B):void { super.callFuncBOfB_1(b); }
public function callFuncBOfC_2(c:C):void { super.callFuncBOfC_1(c); }
public function callFuncBOfD_2(d:D):void { super.callFuncBOfD_1(d); }
}
class D extends B {
public function callFuncBOfB_2(b:B):void { b.funcB(); }
public function callFuncBOfC_2(c:C):void { c.funcB(); }
public function callFuncBOfD_2(d:D):void { d.funcB(); }
}