首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >这是多态性的一个很好的实现吗?

这是多态性的一个很好的实现吗?
EN

Stack Overflow用户
提问于 2010-07-17 15:15:57
回答 1查看 254关注 0票数 0

这是可行的,但这是多态性的一个很好的例子吗?

代码语言:javascript
复制
package mtm.test 
{
    import flash.display.Bitmap;
    import flash.display.BitmapData;
    import flash.display.MovieClip;

    public class TestDocument extends MovieClip
    {
        public function TestDocument() 
        {
            var image:Image = new Image();
            image.id = 0;
            image.bitmaps[BitmapFullSize] = new BitmapFullSize(new BitmapData(400, 400, false, 0x000000));
            image.bitmaps[BitmapMediumSize] = new BitmapMediumSize(new BitmapData(250, 250, false, 0x000000));
            image.bitmaps[BitmapThumbnail] = new BitmapThumbnail(new BitmapData(65, 65, false, 0x000000));

            var bmp:BitmapType = image.bitmaps[BitmapFullSize];
            if(bmp != null) addChild(bmp);
        }
    }
}

这里是上面使用的类:

代码语言:javascript
复制
package mtm.test 
{
    import flash.display.Bitmap;
    public dynamic class Image extends Object
    {
        public var id:int;
        public var enabled:int;
        public var orderNum:int;
        public var filename:String;
        public var title:String;
        public var description:String;

        public var medExists:int;
        public var fullExists:int;
        public var thumbExists:int;

        public var bitmaps:Object = new Object();
    }
}

BitmapType父类

代码语言:javascript
复制
package mtm.test 
{
    import flash.display.Bitmap;
    import flash.display.BitmapData;
    public class BitmapType extends Bitmap
    {
        public function BitmapType(bitmapData:BitmapData = null, pixelSnapping:String = 'auto', smoothing:Boolean = false)
        {
            super(bitmapData, pixelSnapping, smoothing);
        }
    }
}

子类BitmapType

代码语言:javascript
复制
package mtm.test 
{
    import flash.display.BitmapData;
    public class BitmapFullSize extends BitmapType 
    { 
        public function BitmapFullSize(bitmapData:BitmapData = null, pixelSnapping:String = 'auto', smoothing:Boolean = false)
        {
            super(bitmapData, pixelSnapping, smoothing);
        }
    }
}

package mtm.test 
{
    import flash.display.BitmapData;
    public class BitmapMediumSize extends BitmapType 
    { 
        public function BitmapMediumSize(bitmapData:BitmapData = null, pixelSnapping:String = 'auto', smoothing:Boolean = false)
        {
            super(bitmapData, pixelSnapping, smoothing);
        }
    }
}

package mtm.test 
{
    import flash.display.BitmapData;
    public class BitmapThumbnail extends BitmapType 
    {
        public function BitmapThumbnail(bitmapData:BitmapData = null, pixelSnapping:String = 'auto', smoothing:Boolean = false)
        {
            super(bitmapData, pixelSnapping, smoothing);
        }
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-07-17 15:55:43

如果孩子们只是打电话给他们的父实现,那就不是真正的多态性。如果每个子类型都有自己的方法实现,则为多态。因此,如果您有一个Resize()方法,它根据每种类型使用不同的算法,那么这就是多态。

这三种子类型的代码都是相同的。

下面是一个典型的示例:基类称为Vehicle

子类是CarBoatAirplane

每个CarBoatAirplane都有不同的Travel方法。

那么你可以说:

代码语言:javascript
复制
Vehicle myVehicle = new Boat();
myVehicle.Travel();

那是多态。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3272059

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档