本帖最后由 小米锅巴 于 2018-8-29 09:23 编辑
学习经历: 在Java程序语言中,对象的变量是多态的,一个Employee变量既可以引用一个Employee类对象,也可以引用Employee的任何一个子类对象。 public class demo1
{
public static void main(String[] args)
{
People[] p=new People[2];
p[0]=new People();
p[1]=new Student("yang",23);
p[0].eat();
// Student student=(Student) p[1];
// student.study();
// ((Student) p[1]).study();
}
} 在以上代码中我首先我创建了People类(代码在帖子末尾),以及他的子类Student类,然后在测试类中创建了父类数组,在父类数组中存放了一个子类,但是无法通过父类数组名调用子类方法,于是我想到了强转将存放子类的父类数组转换为子类同时调用子类方法。 之后我又进行了第二个测试:public class demo2
{
public static void main(String[] args)
{
Student[] students=new Student[2];
People[] peoples=students;
peoples[1]=new Student("wang",24);
peoples[0]= new People("yang",24);
students[0].study();
students[1].study();
}
首先我创建了子类数组,然后创建父类数组引用指向子类数组,通过这样的方式利用Java语言的多态我就可以向子类数组中存储父类对象 ,代码如下:peoples[1]=new Student("wang",24);同时我通过子类数组引用调用子类方法,但是其中存储的确是父类对象,无法调用子类方法,不过编译器居然通过了,再运行一下果然报错了,数组内存异常。
|