Jam*_*Jam 3 java arrays inheritance
在这个主要方法:
package practice;
public class PersonTest {
public static void main(String[] args)
{
Person[] people = new Person[2];
people[0] = new Person();
people[1] = new Employee();
System.out.println(people[1].job);
}
}
Run Code Online (Sandbox Code Playgroud)
我尝试使用作业时遇到编译器错误.任何人都可以告诉我为什么,以及它应该怎么做?以下是我为上述方法创建的类:
Person类:
package practice;
public class Person{
String name;
int age;
public Person () {
this.name = "undefined";
this.age = 0;
}
}
Run Code Online (Sandbox Code Playgroud)
和Employee类:
package practice;
public class Employee extends Person{
String job;
Employee () {
super();
this.job = "job";
}
}
Run Code Online (Sandbox Code Playgroud)
简单:因为关于该数组的编译时知识是:它是Person对象的数组.
Person[] people = new Person[2];
Run Code Online (Sandbox Code Playgroud)
编译器并不关心您是否决定将Employee对象放入其中一个数组插槽中.
将Person和Employee对象放在这样的数组中是完全正确的 - 但是当你需要Employee特定的东西时,你会做类似的事情:
if (people[i] instanceof Employee) {
System.out.println( ( (Employee) people[i] ). job)
Run Code Online (Sandbox Code Playgroud)
假设你有一辆巴士供人们使用.你的想法是坐在那辆公共汽车上的任何人都是雇员.不 - 这是一辆人的公共汽车- 你不知道坐在那里的人 - 直到你向他们询问他们的性质.
| 归档时间: |
|
| 查看次数: |
68 次 |
| 最近记录: |