草庐IT

polymorphism

全部标签

python - 静态方法和继承设计

我不清楚用可覆盖的静态方法设计类的最佳方法是什么。我将尝试用一个例子来解释。我们有一个类Goat,它有一个方法can_climb。(顺便说一句,这是Python3,在Python2中我会写classGoat(object):。)classGoat:def__init__(self,*args):...defcan_climb(self,mountain):returnmountain.steepness这按预期工作,但方法can_climb不使用self。让它成为静态方法似乎更干净,pylint甚至对上述方法发出警告。那么让我们改变一下:classGoat:def__init__(se

Strategy pattern and Polymorphism

Simpleexample-ComputerandUSBinterface现代人对计算机、USB接口还有各种设备之间的关系都很熟悉,而这些模块组成的系统正是策略模式的最佳范例。定义策略的接口publicinterfaceUSB{publicvoidread();}接口实现——每个接口实现类就是单个策略为了保持简单,我们只为USB接口定义一个读取数据方法read(),接下来就是各种USB设备实现类了,其中键盘、鼠标分别定义各自的实现类。publicclassKeyBoardimplementsUSB{@Overridepublicvoidread(){System.out.println("读取

python - 在sqlalchemy中,当子表有多个父表的外键时,如何使用多态连接表继承?

我有一个名为pbx_point的父表,它有一个point_type列。我还有一个名为pbx_route的子表,其中有一列名为point_id指向pbx_point。我想使用sqlalchemy的连接表继承通过声明性基础将这两个表关联起来,并使用多态继承这工作正常-或者更确切地说,如果没有以下附加约束,它会工作:pbx_point也有一个名为initial_route_id的外键指向pbx_route.我也在下面使用反射,但数据库与我上面描述的一样。我得到的错误是sqlalchemy.exc.AmbiguousForeignKeysError:Can'tdeterminejoinbetw

android - Room 中的多态实体

我的RoomDB中有3个实体:相册、PhotosMediaItem和VideosMediaItem。VideosMediaItem和PhotosMediaItem继承自MediaItem。MediaItem不是数据库中的实体,它只是一个抽象基类。我想创建一个查询,以根据创建日期降序返回特定相册中的所有照片和视频媒体项。因此查询将创建一个MediaItems列表,但具有派生类型。(PhotoMediaItem或VideoMediaItem)以多态方式。这是我尝试过的:@Query("SELECT*FROMPhotosMediaItemWHEREPhotosMediaItem=:album

android - Room 中的多态实体

我的RoomDB中有3个实体:相册、PhotosMediaItem和VideosMediaItem。VideosMediaItem和PhotosMediaItem继承自MediaItem。MediaItem不是数据库中的实体,它只是一个抽象基类。我想创建一个查询,以根据创建日期降序返回特定相册中的所有照片和视频媒体项。因此查询将创建一个MediaItems列表,但具有派生类型。(PhotoMediaItem或VideoMediaItem)以多态方式。这是我尝试过的:@Query("SELECT*FROMPhotosMediaItemWHEREPhotosMediaItem=:album

c# - Entity Framework 多态关联

我将很快将EntityFramework用于预订系统(从头开始制作)。我一直在做一些原型(prototype),试图在项目开始之前弄清楚我想做什么(我仍在与客户讨论需求等)。考虑这种情况:我有一个预订,一个预订可以有关联的资源,可以预订,但这些资源可以不同,并且有不同的字段等。我以前从未真正使用过EF,所以我不知道如何实现这种多态性,而我在其他项目(我们一直在使用原始SQL)中使用过这种多态性。C#模型如下所示:publicclassBooking{publicintBookingID{get;set;}publicDateTimeStartTime{get;set;}publicDa

c# - Entity Framework 多态关联

我将很快将EntityFramework用于预订系统(从头开始制作)。我一直在做一些原型(prototype),试图在项目开始之前弄清楚我想做什么(我仍在与客户讨论需求等)。考虑这种情况:我有一个预订,一个预订可以有关联的资源,可以预订,但这些资源可以不同,并且有不同的字段等。我以前从未真正使用过EF,所以我不知道如何实现这种多态性,而我在其他项目(我们一直在使用原始SQL)中使用过这种多态性。C#模型如下所示:publicclassBooking{publicintBookingID{get;set;}publicDateTimeStartTime{get;set;}publicDa

c# - 在实现中用派生类覆盖接口(interface)方法返回类型

我正在尝试在类中实现(C#)接口(interface)方法,返回派生类型而不是接口(interface)中定义的基类型:interfaceIFactory{BaseCarGetCar();}classMyFactory:IFactory{MyCarGetCar(){}}当然在哪里:classMyCar:BaseCar{}但是,出现如下错误:“MyFactory”未实现接口(interface)成员“IFactory.GetCar()”。“MyFactory.BaseCar()”无法实现IFactory.GetCar(),因为它没有匹配的“BaseCar”返回类型。谁能告诉我失败的原因,

c# - 在实现中用派生类覆盖接口(interface)方法返回类型

我正在尝试在类中实现(C#)接口(interface)方法,返回派生类型而不是接口(interface)中定义的基类型:interfaceIFactory{BaseCarGetCar();}classMyFactory:IFactory{MyCarGetCar(){}}当然在哪里:classMyCar:BaseCar{}但是,出现如下错误:“MyFactory”未实现接口(interface)成员“IFactory.GetCar()”。“MyFactory.BaseCar()”无法实现IFactory.GetCar(),因为它没有匹配的“BaseCar”返回类型。谁能告诉我失败的原因,

c# - 在 C# 中创建 <base class> 类型的变量来存储 <derived class> 对象

关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭8年前。Improvethisquestion我对编程有些陌生,我对C#中的类、继承和多态性有疑问。在学习这些主题时,我偶尔会遇到类似这样的代码:Animalfluffy=newCat();//whereAnimalisasuperclassofCat*这让我很困惑,因为我不明白为什么有人会创建一个Animal类型的变量来存储Cat类型的对象。为什么一个人不简单地写这个:Catfluffy=newCat();我确实理解为什么将子对象存