Vb.net 面向对象编程=>在运行时更改对象

Vb.net 面向对象编程=>在运行时更改对象,vb.net,Vb.net,是否可以编写面向对象的代码来覆盖对象 我想要实现的示例: 在一个程序中,您可以从两个侧面进入文件服务器,即Windows中的公司资源管理器内部或公司sFTP外部 是否可以根据您的访问权限切换对象FileAccess 如果您可以在运行时更改它,而不必总是在内部编写if,然后执行WindowsExplorerThingy,或者执行FTP之类的操作,那将是一件令人惊讶的事情 但是:FileSaver.DoWork会直接转到FTP或WindowsExplorer并在那里完成工作。我必须编写两个不同的对象

是否可以编写面向对象的代码来覆盖对象

我想要实现的示例: 在一个程序中,您可以从两个侧面进入文件服务器,即Windows中的公司资源管理器内部或公司sFTP外部

是否可以根据您的访问权限切换对象FileAccess

如果您可以在运行时更改它,而不必总是在内部编写if,然后执行WindowsExplorerThingy,或者执行FTP之类的操作,那将是一件令人惊讶的事情

但是:FileSaver.DoWork会直接转到FTP或WindowsExplorer并在那里完成工作。我必须编写两个不同的对象,一个用于WindowsExplorer,另一个用于FTP。 这两个对象将具有相同的功能,如openfile或deletefile


对不起,这个愚蠢的问题。2018年,我仍在编写functional,并试图切换到面向对象编程。

似乎您需要一个FileAccess对象,该对象具有一组成员、方法、属性等,但这些成员的工作方式不同,这取决于这是内部访问还是外部访问

有两种方法可以做到这一点:

从公共基类继承。 实现一个接口。 继承权

要使用此方法,请创建一个名为FileAccess的基类,该基类包含所有 您需要的成员。然后创建从FileAccess继承的类FileAccessInternal和FileAccessExternal。派生类可以重写FileAccess中需要以不同方式工作的成员。现在,您可以根据访问类型创建相应派生类的对象,并将其传递给需要FileAccess对象的方法。FileAccess对象将使用派生类中的适当方法

有关继承的更多信息,请阅读

接口

接口定义了一组方法。接口没有为这些方法提供代码,它只提供每个方法名称、参数列表和返回类型的签名。实现接口的类承诺包含接口的每个方法

要使用此方法,请创建一个名为IFileAccess的接口。初始I不是必需的,但对于列出所需所有方法的接口来说,这是惯例。然后创建实现IFileAccess接口的FileAccessInternal和FileAccessExternal类。实现接口的类必须为每个方法提供代码。现在,您可以根据访问类型创建相应派生类的对象,并将其传递给需要IFileAccess对象的方法。IFileAccess对象将使用实现类中的适当方法


有关接口的更多信息,请阅读。

new user=>read and take the commenters=>带您了解此常见问题解答工作对象如何具有可变状态通常就是这种情况。但通常不能用其他对象替换它。对对象的引用也可以更改为引用其他对象,但这不会替换原始对象。