作者: 谢冬 时间: 2013-3-23 20:22
我个人的理解:多态就是自动类型提升,比如说我们以前学基本数据类型,short类型转int类型:short s = 3; int i = s;小转大就是自动类型提升,如果把int类型转成short类型,大转小那么就需要强转,比如 int i = 3,short s = (short)i;如果你用一个不存在的类型来接收,编译就会出错,比如说:haha h = 3; int i = h;这就会出错,这里就是为什么父类的引用指向子类对象,如果根本不存在的子类,当然会出错啦作者: 葛晓红 时间: 2013-3-23 21:48
例如对于代码:Person a = new Teacher();
父类类型的引用指向子类对象就是说:因为Teacher是继承父类Person,所以我可以定义一个Person类型的引用a,指向新建的Teacher类型的对象。这样父类类型的引用可以调用父类中定义的所有属性和方法,但是不能调用子类中定义而父类中没有的方法。 同时,父类中的一个方法只有在在父类中定义而在子类中没有重写的情况下,才可以被父类类型的引用调用;而对于父类中定义的方法,如果子类中重写了该方法,那么父类类型的引用将会调用子类中的这个方法。