每日一题之(多态 )三 学习java

重要的几句话:

(1)一个对象的编译类型和运行类型可以不一致

如: Dog 类是Anlimal的子类 ,

Animal animal = new Dog();

(2)编译类型在定义对象时,就确定了,不能改变。

如:一旦创建,Animal就是编译类型,不会在改变 

Animal animal = new Dog();

(3)运行类型是可以改变的

如:此时,编译类型仍然是Animal,运行类型就从Dog变成Cat 。

Animal animal = new Dog();
animal = new Cat();

(4)编译类型看定义时 = 号的左边,运行类型看 =号的 右边

如:左边Animal就是编译类型,右边Dog就是运行类型。

Animal animal = new Dog();

总结: 经过上述的四点 ,要牢记这四个点,以防弄错运行时的对象。new Dog是在堆中开辟的空间,而animal只是在栈中创建的一个引用,从而指向堆中地址。在编译时,javac是看编译类型,而运行时,是jvm的实现,不会在看编译类型,所以要牢记这几个重点。

你可能感兴趣的:(学习,java)