多态
一个父类可以有多个子类,而在子类里可以重写父类的方法,这样每个子类里重写的代码不一样,自然表现形式就不一样。这样用父类的变量去引用不同的子类,在调用这个相同的方法的时候得到的结果和表现形式就不一样了,这就是多态,相同的消息(也就是调用相同的方法)会有不同的结果。
多态通过动态绑定(dynamic binding)技术来实现,是指在执行期间判断所引用对象的实际类型,根据其实际的类型调用其相应的方法。也就是说,只有程序运行起来,你才知道调用的是哪个子类的方法。
子类是对父类的改进和扩充。正是因为父类和不同子类之间有共性,所以才由父类的引用指向不同的子类。Father既可以指向Son1又可以指向Son2就是因为他们有相同的共性
1.向上转型
向上转型是父类引用指向子类对象。通俗地说就是是将子类对象转为父类对象。
父类引用指向子类对象指的是:例如父类Animal,子类Cat,Dog。其中Animal可以是类也可以是接口,Cat和Dog是继承或实现Animal的子类。
Animal animal = new Cat();
即声明的是父类,实际指向的是子类的一个对象。
2.向下转型
java中“向上转型”是自动的。但是“向下转型”却不是自动的。需要我们用强制类型转化。
Animal c = new Cat();
Cat c1 = (Cat)c; //不允许