Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在“普通”代码中,Java会给您一个编译时错误(例如,如果您要在上面的代码中编写Dog-Dog=d;)。但是,在这里,您使用强制类型转换强制类型系统。在这种情况下,动物显然不是狗,但花费大量时间进行静态类型检查是不值得的。如果程序员说所有的动物都是狗,没问_Java_Oop_Types - Fatal编程技术网

在“普通”代码中,Java会给您一个编译时错误(例如,如果您要在上面的代码中编写Dog-Dog=d;)。但是,在这里,您使用强制类型转换强制类型系统。在这种情况下,动物显然不是狗,但花费大量时间进行静态类型检查是不值得的。如果程序员说所有的动物都是狗,没问

在“普通”代码中,Java会给您一个编译时错误(例如,如果您要在上面的代码中编写Dog-Dog=d;)。但是,在这里,您使用强制类型转换强制类型系统。在这种情况下,动物显然不是狗,但花费大量时间进行静态类型检查是不值得的。如果程序员说所有的动物都是狗,没问,java,oop,types,Java,Oop,Types,在“普通”代码中,Java会给您一个编译时错误(例如,如果您要在上面的代码中编写Dog-Dog=d;)。但是,在这里,您使用强制类型转换强制类型系统。在这种情况下,动物显然不是狗,但花费大量时间进行静态类型检查是不值得的。如果程序员说所有的动物都是狗,没问题。不管怎样,它最终还是会爆炸。但是有了多态性,它总是会在运行时调用实际的类型,不是吗?@rb612是的,但我谈到了非虚拟方法。你错过了吗?@SriramSakthivel但Java中的所有方法都是虚拟的。方法总是被分派到运行时类型。@resu


在“普通”代码中,Java会给您一个编译时错误(例如,如果您要在上面的代码中编写
Dog-Dog=d;
)。但是,在这里,您使用强制类型转换强制类型系统。在这种情况下,
动物
显然不是
,但花费大量时间进行静态类型检查是不值得的。如果程序员说所有的
动物
都是
,没问题。不管怎样,它最终还是会爆炸。但是有了多态性,它总是会在运行时调用实际的类型,不是吗?@rb612是的,但我谈到了非虚拟方法。你错过了吗?@SriramSakthivel但Java中的所有方法都是虚拟的。方法总是被分派到运行时类型。@resueman嗯,可以有
final
方法,对吗?这算是非虚拟方法吗?如果不是,考虑我的答案是关于<代码> C<<代码>,因为这个问题被标记为C。@ SriramSakthivel,你说得对,我错过了那部分。我现在明白你的意思了。这是一个很好的论点。我试图看到一个更具多态性的Java等价物。没错,我知道它会在运行时抛出
ClassCastException
,而不会捕获编译时错误。这就是我的问题所在——运行时,而不是编译时。
public class TestClass 
{
   public static void main(String[] args) 
   {
       Animal d = new Animal();
      ((Dog)d).bark(); //ClassCastException because an Animal is not a dog, which would make sense to throw at compile-time, but not at runtime.
   }
}

class Dog extends Animal{}

class Animal
{
   void bark()
   {
       System.out.println("Woof");
   }
}