我是一名java程序员,正在尝试理解方法(java方法)和函数(例如c ++)之间的区别.我曾经认为它们是相同的,只是不同编程语言的不同命名约定.但是现在我知道他们不是,我无法理解差异.
我知道一个方法涉及一个类的实例,并且可以访问类数据(成员变量),而一个函数不能(?).那么函数有点像静态方法吗?
看到这里我读到的解释让我想到了这一点.
给定一个接受某个超类型作为参数的方法.在该方法中,有没有办法确定传递给它的对象的实际类?即如果实际传递了allowable参数的子类型,有没有办法找出它是哪种类型?如果这是不可能的,有人可以解释为什么不(从语言设计的角度来看)?谢谢
更新:只是为了确保我很清楚
Context: MySubType extends MyType
void doSomething(MyType myType) {
//determine if myType is MyType OR one of its subclasses
//i.e. if MySubType is passed as a parameter, I know that it can be explicitly
//cast to a MySubType, but how can I ascertain that its this type
//considering that there could be many subclasses of MyType
}
Run Code Online (Sandbox Code Playgroud)
由于方法签名将参数指定为MyType,所以如何判断对象实际上是否是MyType(以及哪一个)的子类型.