理解多态性
对象的多态性:父类的引用指向子类的对象
可以直接应用在抽象类和接口上
在Java中,子类的对象可以替代父类的对象使用
一个变量只能有一种确定的数据类型
一个引用类型变量可能指向(引用)多种不同类型的对象
子类可以看做是特殊的父类,使用父类类型的引用可以指向子类的对象
例:
Person p = new Student();Object o = new Person();//Object类型的变量o,指向Person类型的对象o = new Student;//Object类型的变量o,指向Student类型的对象
Java引用变量的两个类型:编译时类型和运行时类型。编译时类型由声明该变量时使用的类型决定,运行时类型由实际赋给该变量的对象决定。编译时类型和运行时类型不一致,就出现了对象的多态性。
一个引用类型变量如果声明为父类的类型,但实际引用的是子类对象,那么该变量就不能再访问子类中添加的属性和方法。
例:
Student m = new Student();m.school = "pku";//合法,Student类有school成员变量Person e = new Student();e.school = "pku";//非法,Person类没有school成员变量//属性时在编译时确定的,编译时e为Persn类型,没有school成员变量,因此编译错误暑期编程PK赛 得CSDN机械键盘等精美礼品!



