English 中文(简体)
将超级类通过到 C# 函数( 带有 Java 符号)
原标题:Passing Superclasses to C# Functions (With a Java overture)

我很久没和爪哇·奥普做任何事了 所以我有点生锈,想澄清一下

在爪哇,如果我记错的话, 人们可以声明一个超级类, 并立即给一个子类, 例如, < code > Superclass myObject = new Sub类 () 。

然后,人们可以将我的Object 传送到一个接受超级类参数的函数,并使用引用访问任何超级类属性/方法。

s 这里的东西会雾 - 如果你想访问子类特定的方法/变量, 您可以直接对我的对象( 被宣布为超级类) 这样做吗? 或者您需要先把它投入子类类型?

如果我们把这个翻到C# 现在, 同样的逻辑是否适用? 我遇到了一些奇怪的问题 试图重复这种行为。 我所关注的具体用途是:

//These are just declarations for ease-of-reading
Superclass bar = new Subclass();
public static void doSomething(Superclass foo) {...}

//Logic
doSomething(bar);
bar.superOnly() //Should this work?
bar.subOnly() //Should this work?
bar.subOverrided() //Will this call the superclass or subclass version?

我在教程中也搜索了这些东西, 但大多数例子似乎都是简单的“ 子类我的Object = 新的子类 () ” 例子, 带有微小的输出。 目前我没有发现什么能覆盖功能参数的模糊世界 。

如果有谁能帮我, 或者指给我具体的资源, 包括功能参数和 C# 的OO, 我会非常感激!

最佳回答

s 这里的东西会雾 - 如果你想访问子类特定的方法/变量, 您可以直接对我的对象( 被宣布为超级类) 这样做吗? 或者您需要先把它投入子类类型?

是的,多元形态就是用这个来解释的。在衍生类中被推翻的基级的虚拟方法总是被称作,即使你通过基准类型的参考来称呼该方法。

如果我们把这个翻到C# 现在, 同样的逻辑适用吗?

是的,原则是相同的

例如:

bar.superOnly() //Should this work?

是 是

bar.subOnly() //Should this work?

否, 因为编译者不会知道这个方法

bar.subOverrided() // Will this call the superclass or subclass version? => the subclass

是 是, thanks to polymorphism

问题回答

两种方法来获得你想要的功能

1) Cast the object to the subclass
2) Instantiate the object as the subclass from the beginning.

如果我有一个 Collection ,不知道 ArrayList 究竟使用什么方法,那么无法援引 ArrayList 的方法,则第一个数字。

Collection collection = new ArrayList(); 

二号示例:

ArrayList list = new ArrayList();  

以上各点使我有机会了解一切公开的(由上层/上层分享的)和在<代码>ArrayList 中宣布的一切。

如果您想要调用在子类 < / 坚固 > 上仅声明的“ 坚固 > ” 方法, 您必须将变量投到子类中, 或者从子类类型中的变量开始 。

如果您想要调用一个在子类 < / 强'上“ 强” 覆盖的方法, 您可以通过超级类变量调用该方法, 并调用子类 s 版本 。

在C#和爪哇, 规则是相当一致的。

您 < strong > declare a 变量,该变量具有特定类型,可指定您可以使用的界面。声明的类型是变量之前的型号。只有被定义为声明类型一部分的方法(不插入)才能使用(不插入)。

反之,“强度”定义 new 。

所宣布的变量类型只能通过投入其他类型才能更改,而其他类型可能成功,也可能不成功(而汇编者不一定知道您的投影是否有效)。





相关问题
Spring Properties File

Hi have this j2ee web application developed using spring framework. I have a problem with rendering mnessages in nihongo characters from the properties file. I tried converting the file to ascii using ...

Logging a global ID in multiple components

I have a system which contains multiple applications connected together using JMS and Spring Integration. Messages get sent along a chain of applications. [App A] -> [App B] -> [App C] We set a ...

Java Library Size

If I m given two Java Libraries in Jar format, 1 having no bells and whistles, and the other having lots of them that will mostly go unused.... my question is: How will the larger, mostly unused ...

How to get the Array Class for a given Class in Java?

I have a Class variable that holds a certain type and I need to get a variable that holds the corresponding array class. The best I could come up with is this: Class arrayOfFooClass = java.lang....

SQLite , Derby vs file system

I m working on a Java desktop application that reads and writes from/to different files. I think a better solution would be to replace the file system by a SQLite database. How hard is it to migrate ...

热门标签