⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 group.java

📁 《Java2程序设计实用教程(第2版)》课件
💻 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 + -