抽象层:距离预期的运行时对象有多远?

时间:2014-07-29 17:10:39

标签: java polymorphism

我希望这一点与我脑子里一样清晰。

我想我理解多态的本质。但是我想到了一个想法。想象一下,我需要一个级别较低的类的服务:

java.lang.Object中

...

java ... TheirClass实现了ItheirClass

public class MyClass1 {
 private Object theirClass;

 public MyClass1(Object thierClass) {
    this.theirClass = (ItheirClass) theirClass;
 }
}

public class MyClass2 {
 private ItheirClass theirClass;

 public MyClass2(ItheirClass thierClass) {
    this.theirClass = theirClass
 }
}

哪个是首选,为什么?一个' instanceOf'是否需要在第一次实现中检查传递的对象到构造函数?感谢。

1 个答案:

答案 0 :(得分:1)

后者是首选。

如果你犯了一个错误,并为每个错误类型的参数提供信息,后者会在编译时提醒你,但前者在运行时才会失败。

一个较小的问题是类型转换不是Java中的自由操作,所以如果这是在大量使用的代码中,那么使用前者就会产生很小的运行时性能负担而无法获得。