📄 group.java
字号:
//【例3.7】 运行时多态性的应用。
public class Group
{
private Person1[] pgroup; //对象数组
private int count; //数组中对象个数
public Group(int n)
{
if (n<0)
n=10;
pgroup = new Person1[n];
count=0;
}
public Group()
{
this(10);
}
public void append(Person1 p1) //添加对象,参数传递对象引用
{
if (count<pgroup.length)
{
pgroup[count] = p1; //引用赋值
count++;
}
else
System.out.println("数组已满,不能添加对象!");
}
public void print() //显示所有人员信息
{
System.out.println("全部对象显示如下:");
for (int i=0;i<count;i++)
{
System.out.println(pgroup[i].toString());
//运行时多态,可以省略toString()
}
Student2.howMany(); //分别统计父类和子类的人数
System.out.println();
}
public Person1 oldest() //返回年龄最大者,方法返回对象
{
Person1 p1;
int max=0; //最大值的下标
for (int i=1;i<count;i++)
{
if (pgroup[i].age>pgroup[max].age)
max = i;
}
return pgroup[max]; //返回对象引用
}
}
class Group_ex
{
public static void main(String args[])
{
Group g1 = new Group();
g1.append(new Person1("李小明",21));
//添加父类对象
Person1 p1 = new Student2("张小莉",18,"计算机");
g1.append(p1); //添加子类对象
p1 = new Student2("胡东东",22,"电子信息");
g1.append(p1);
p1 = new Student2("胡东2",22,"电子信息");
g1.print();
System.out.println("年龄最大者是 ("+g1.oldest()+")");//省略了toString();
}
}
/*
程序运行结果如下:
全部对象显示如下:
李小明,21岁
张小莉,18岁,计算机专业
胡东东,22岁,电子信息专业
Person1.count=4 Student2.count=3
年龄最大者是 (胡东东,22岁,电子信息专业)
*/
/*
程序正确:
类中print()方法与下列方法体等价:
public void print() //显示所有人员信息
{
System.out.println("全部对象显示如下:");
for (int i=0;i<count;i++)
{
System.out.println(pgroup[i].toString());
//运行时多态,可以省略toString()
//或者
// Person1 p1=pgroup[i];
// if (!(p1 instanceof Student2))
// System.out.println(p1.toString()); //可以省略toString()
// else
// {
// Student2 s1= (Student2)p1; //对象的强制类型转换
// System.out.println(s1.toString());
// }
}
System.out.println();
}
程序错误:
*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -