已知类person是类student的父类,以下数组定义和赋值哪些是正确的( ).
问题描述:
已知类person是类student的父类,以下数组定义和赋值哪些是正确的( ).
A. person p[]=new person[3]; p[1]=new student();B .student s[]=new person[3]; s[1]=new person();C .person p[]= new student[3];p[1]= new person(); D .student s[]=new student[3];s[1]=new person
为什么选A?
答
这题考的是类型转换,答案A明显有一个父类类型的引用变量(P1)指向子类对象(new Student()),这是实现多态的要点之一.其他的都不符合规范.B的student s[]=new person[3]需要把person强制转换成student才可以,C中p[1]= new person();前面已经定义P[I]指向student类型的对象了,这样明显也需要强制转换,D也是一样,子类引用指向父类对象,需要强制类型转换Z总得来说就是等号左边是父类,等号右边是子类可以,反之不可以,需要强制转换