2.6.覆盖超类方法

问题
我要对从父类继承过来的方法进行重新实现。
解决办法
父类的方法必须申明为public 或protected。当申明子类的实现时使用override 修饰符
讨论
通常子类继承父类的所有方法而不做任何修改,但有些情况,继承过来的方法需要重新申明,实现与父类的方法不同。这时就要覆盖方法,该方法必须加上override 修饰符。如下面的例子,首先定义一个父类Superclass:
+展开
-ActionScript
package {
public class Superclass {
public function Superclass( ) {}
public function toString( ):String {
return "Superclass.toString( )";
}
}
}

下一步,定义Subclass 继承自Superclass:
+展开
-ActionScript
package {
public class Subclass extends Superclass {
public function Subclass( ) {}
}
}

默认情况下,Subclass 继承Superclass 实现的toString( ) 方法:
+展开
-ActionScript
var example:Subclass = new Subclass( );
trace(example.toString( )); // 显示: Superclass.toString( )
如果你要toString( ) 方法返回不同的值,就要覆盖它,如下:
+展开
-ActionScript
package {
public class Subclass extends Superclass {
public function Subclass( ) {}
override public function toString( ):String {
return "Subclass.toString( )";
}
}
}
覆盖方法,则该方法必须与父类的方法完全相同,包括参数数量和类型及返回类型,如果不一致,编译器就会报错。

有时你要覆盖方法是为了实现完全不同的功能,但有时你只是要增加一些东西,这时你可以调用父类方法:
+展开
-ActionScript
super.methodName( );

加支付宝好友偷能量挖...


评论(0)网络
阅读(89)喜欢(0)flash/flex/fcs/AIR