【贝武易科技专业flex3D开发--www.newflash3d.com】
在flex中我们经常遇到类、子类、继承、方法重写等问题,下面我们就简单的开看看他们之间的关系。
类的修饰词:
类有以下的修饰词:
public:公有类型,这个类可以在任何地方的任何对象访问,一般用来定义全局使用的类。
internal:内部类型,只能在同一个package 中的类才能访问,如果没有指定修饰词为internal。
dynamic:动态类型,类的属性和方法不确定,允许在运行时动态的添加。MovieClip 类便是动态类。当要继承动态类时,也要定义为动态类型。一般只用于特殊场合。
final:终点类型,表示类是继承关系中的终点,不能被继承。可以被视为一个固定的、无法被动态修改的常数。
方法的类型(方法的修饰词):
public 公共的,都可以用的
protected 内部和子类可以用的
private 只有内部可以用的
internal 同一个包里可以用的
我们一般继承的方法都采取protected类型的方法。
哈哈,说得详细点。
属性和函数有以下修饰词:public > internal > protected > private
public:公有类型,可以被所有的类使用。
protected:保护类型,定义的属性和函数可以在内部使用,或者在子类的内部使用,但外部是无法看到的。
private:私有类型,最严格的类型,只能在类的内部使用,外部无法看到的。
internal:内部类型,只能在同一个package 内部使用,可以被同一个 package 内的类访问。
我们在项目里建立一个文件夹hjh3dcom,并在它里面生成一个类,名为baseClass.as,意思是说,它是一个基类(基础的类),其他的类延伸至于这个基类。
代码如下:
package hjh3dcom
{
public class baseClass
{
public function baseClass()
{
trace("这是基类的构造函数");
}
public function printout():void{
trace("这是基类的printout方法");
}
}
}
我们接着生成这个类的对象,主程序代码如下:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" applicationComplete="init();">
<mx:Script>
<![CDATA[
import hjh3dcom.baseClass;
private var myclass:baseClass;
private function init():void{
myclass=new baseClass();
myclass.printout();
}
]]>
</mx:Script>
</mx:Application>
debug一下,我们可以看到console平台打印输出了:
这是基类的构造函数
这是基类的printout方法
如下图:
这里需要注意的是,我们只有在debug模式下才能trace()出内容来,如果你的debug有问题,有可能你的flashplayer的版本不是debug版的,如果那样的话,你可以把你的flashplayer先卸载,然后在我们的flash资源集里下载flashplayer的debug版本。
http://bvu.iteye.com/blog/284863
当我们生成类baseClass的实例myclass=new ,执行了构造函数,执行了trace("这是基类的构造函数");语句,下面的myclass.printout();调用了printout()方法,执行了trace("这是基类的printout方法");,所以我们得出了以上的结果。
下面,我们生成一个extendsClass.as
代码如下:
package hjh3dcom
{
public class extendsClass extends baseClass
{
public function extendsClass()
{
super();
}
}
}
我们把主程序的代码改为
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" applicationComplete="init();">
<mx:Script>
<![CDATA[
import hjh3dcom.*;
private var myclass:extendsClass;
private function init():void{
myclass=new extendsClass();
myclass.printout();
}
]]>
</mx:Script>
</mx:Application>
执行,输出结果为:
这是基类的构造函数
这是基类的printout方法
下面,我们可以在子类把父类的printout()重写,代码如下:
我们会获得结果:
这是基类的构造函数
这是extendsClass类重写的printout()方法
package hjh3dcom
{
public class extendsClass extends baseClass
{
public function extendsClass()
{
super();
}
override public function printout():void{
trace("这是extendsClass类重写的printout()方法");
}
}
}
第一个输出不变,但是第二个输出为我们重写后的printout()方法了,如果我们加入这句
super.printout();
那么新的代码如下:
package hjh3dcom
{
public class extendsClass extends baseClass
{
public function extendsClass()
{
super();
}
override public function printout():void{
super.printout();
trace("这是extendsClass类重写的printout()方法");
}
}
}
输出结果为:
这是基类的构造函数
这是基类的printout方法
这是extendsClass类重写的printout()方法
继承的两个方法及重写后的内容都一起出现了。这就是override(重写)的概念,通过重写,我们可以扩展我们基于父类的新的属性和方法。
这里的super,是继承的意思。
【贝武易科技专业flex3D开发--www.newflash3d.com】
- 大小: 18.2 KB
分享到:
相关推荐
这里 `Student` 类继承了 `Person` 类,添加了一个新的属性 `grade` 并重写了 `sayHello` 方法。当我们创建一个 `Student` 对象时,它不仅具有 `Person` 的所有属性和方法,还增加了自己的特性。 最后,我们谈谈...
本文将深入探讨 Lua 中如何实现类的继承以及方法的重写(override)。 首先,我们来理解 Lua 中的“类”。在 Lua 中,类通常被表示为一个表(table),这个表包含了类的一些属性和方法。创建一个类,我们可以定义一...
在创建自定义线程时,通常我们会继承`QThread`类,并重写`run()`函数。这个函数是我们在线程中执行特定任务的地方。例如: ```cpp class MyThread : public QThread { Q_OBJECT public: explicit MyThread...
这个练习不仅涵盖了Java中的继承和重写概念,还涉及到了抽象类、接口(虽然这里没有用到)、构造函数以及数学运算在编程中的应用。这种设计模式使得代码结构清晰,易于扩展,当需要添加新的图形类型时,只需创建一个...
本篇文章将详细介绍C#中的类继承,包括如何实现继承、构造函数在继承中的作用、以及重载、重写和隐藏的概念。 #### 二、实现继承 在C#中,实现类的继承非常简单。只需在定义子类时,在类名后面加上冒号 `:`,紧...
1. **类的继承定义**:继承允许子类(也称为派生类)获取父类的属性和方法,而无需重新编写它们。这使得子类可以构建在父类的基础上,扩展其功能或覆盖特定行为。 2. **关键字表示**:在Python中,子类继承父类通常...
在C++编程语言中,虚函数(virtual functions)是实现多态性的一种关键机制,它允许我们通过指针或引用调用子类重写的方法,即使该指针或引用指向的是基类。当我们讨论基类与子类的虚函数调用顺序时,这涉及到构造...
4.1 多态性:由于类的继承和方法的重写,Android对象可以展现出多态性,即一个对象可以在不同的上下文中表现出不同的行为。例如,多个Activity可以继承自同一个抽象基类,而这个基类可以定义一些通用方法。 4.2 ...
此外,派生类还可以重写(override)基类的方法以提供不同的实现,这称为覆盖。 ### 类成员的访问控制 在继承过程中,基类的成员访问控制是一个关键点。C++ 支持三种访问级别:`public`、`protected` 和 `private`...
C#编程语言中,类和对象的构造及方法执行顺序是一个关键的概念,尤其在涉及到继承、构造函数、虚方法和重写时。以下是对给定场景的详细解释: 1. **场景一:只实例化父类** 当我们创建一个`A`类型的对象时,只会...
覆盖(Override)是子类对父类方法的一种重写,用于提供不同的实现。在Java中,覆盖方法需要满足以下条件: 1. 方法名和参数列表必须完全相同。 2. 访问权限不能更低(更私有)。 3. 返回类型必须兼容(可以是父类...
在这个例子中,`Dog`类继承自`Animal`类,所以`Dog`不仅拥有`Eat`方法,还可以自定义`Bark`方法。 **三、封装(Encapsulation)** 封装是隐藏对象的内部实现细节,只对外提供公共接口供其他代码使用。这样可以防止...
C#子类对基类方法的继承、重写与隐藏是OOP编程中的一些重要概念,掌握这些概念对于学习C#和使用C#编程语言非常重要。下面,我们将通过示例代码详细介绍C#子类对基类方法的继承、重写与隐藏。 一、子类继承基类非...
这个"java实验三 类的继承--圆.rar"文件显然包含了一个关于如何在Java中实现类继承的实验项目,涵盖了实验代码、实验报告、心得体会以及相关的习题解答。下面我们将深入探讨类的继承这一主题。 首先,类的继承允许...
总结来说,Python中的类继承和方法重写是强大的工具,它们让代码能够复用和扩展。通过继承,我们可以构建层次化的类结构,让代码更加模块化;通过方法重写,我们可以根据需要定制或改进父类的行为,而不必改动原有...
继承允许一个类(子类)从另一个类(基类)继承属性和方法,而多态则允许不同类的对象对同一消息做出不同的响应,提高了代码的灵活性和重用性。虚函数在实现多态中扮演着关键角色,它可以确保程序在运行时能够调用到...
在C++编程语言中,继承是面向对象编程的一个核心特性,它允许我们创建一个新类(子类)作为现有类(父类)的扩展。这个练习主要是为了帮助开发者熟悉如何在C++中实现继承设计。下面我们将深入探讨C++继承的基本概念...
在C#编程语言中,重写(Override)和重载(Overload)是两种非常重要的概念,它们分别涉及对象多态性和方法的可选性。理解这两者的区别对于编写高效且易于维护的代码至关重要。 首先,让我们深入了解一下重写(Override)...
虚函数允许子类重写基类方法,而抽象类定义了子类必须遵循的规范。在VS2010这样的开发环境中,我们可以方便地组织和管理这些类的源代码文件,以便于项目的开发和维护。通过理解和熟练运用这些概念,可以提高代码的可...