与其他语言相比,Java中的具体类型和抽象类型

贾斯汀·凯瑞(Justin Carrey)

当我遇到以下问题时,我正在准备决赛,并尝试在教科书背面解决运动问题:

在Java中,如果p的具体类型为Foo,则p.getClass()和Foo.class将返回相同的内容。解释为什么不能保证在Ruby,Python或JavaScript中保持类似的等效性。

任何人都可以阐明这一点。提前致谢!

汤姆

Ruby,Python和JavaScript都是动态类型化的语言,但这不是静态类型还是动态类型的问题。相反,我认为这与Java语言getClass()是最终语言(不能被覆盖)而其他语言没有这样的限制有关:

# Ruby
class Foo
  def class­()
    retur­n Strin­g
  end
end
String.new().class() == String # => true
Foo.new().class() == Foo # => false
# Python
class Foo: pass
class Bar: pass
p = Foo()
p.__class__ == Foo # => True
p.__class__ = Bar
p.__class__ == Foo # => False
// JavaScript
function Foo() { }
function Bar() { }
var p = new Foo();
p.constructor == Foo; // => true
p.constructor = Bar;
p.constructor == Foo; // => false

有趣的是,在Python的情况下,该__class__成员实际上会影响方法的查找,因此可以认为的具体类型p为now Bar,这并不违反等效性。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

与其他语言相比,Java中的具体类型和抽象类型

来自分类Dev

Java中的String引用类型与其他对象相比

来自分类Dev

返回抽象类中的具体类型

来自分类Dev

Java抽象类和类型

来自分类Dev

抽象类的具体子类的Typescript类型

来自分类Dev

如何在Scala中反映与抽象类型的类型参数相对应的具体类型?

来自分类Dev

抽象类是否可以具有其他抽象类的返回类型的方法?

来自分类Dev

c'tor和d'tor从抽象基础到其他抽象类的继承到具体

来自分类Dev

Scala 中的抽象类型、变量和类型类

来自分类Dev

区分空对象类型和其他具体类型

来自分类Dev

如何具体设置类型绑定的抽象类型?

来自分类Dev

R中的抽象类型

来自分类Dev

Ruby中的整数和其他(?)抽象类

来自分类Dev

为什么.NET中的n层与其他语言相比有所不同

来自分类Dev

在Java中,是否应该使用Integer对象而不是int原语(与其他数字类型相同)?

来自分类Dev

抽象类的继承使用为属性定义的其他类型

来自分类Dev

理解抽象类型

来自分类Dev

MXBean操作签名中的抽象类型

来自分类Dev

Julia中抽象类型数组的用法

来自分类Dev

在C ++中声明抽象类型的变量

来自分类Dev

python中的抽象类:强制类型

来自分类Dev

C样式类型注释与其他

来自分类Dev

C样式类型注释与其他

来自分类Dev

Scala抽象类型成员-继承和类型界限

来自分类Dev

Haskell中的现有类型和其他语言中的泛型

来自分类Dev

Haskell中的现有类型和其他语言中的泛型

来自分类Dev

REST 如何实现多态 POST 端点:抽象类型需要映射到具体类型

来自分类Dev

用特征中的抽象类型解决类型擦除问题

来自分类Dev

与其他员工相比,如何选择SQL中的员工

Related 相关文章

热门标签

归档