多态练习题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了多态练习题相关的知识,希望对你有一定的参考价值。

       定义一个类是People,又定义两个类,一个Man类,另一个是Woman类,Man
类中有个属性是老婆,有一个方法是lol,Woman类中有个属性是老公,有一个方法
是shopping,还有一个方法是生孩子,先判断是否有老公,如果有老公,就创建一
个对象,50%概率是男孩,50%概率是女孩,有一个返回值,最后如果生的是男孩
就玩lol,如果是个女孩就去购物shopping。

代码:

//父类
public class People {

}

男人类:

/**
 * 男性
 */
public class Man extends People{
    //老婆属性
    private Woman wife;

    public Woman getWife() {
        return wife;
    }

    public void setWife(Woman wife) {
        this.wife = wife;
    }

    //lol方法
    public void lol(){
        System.out.println("玩游戏,真好玩!!!");
    }
}

女人类:

/**
 * 女性
 */
public class Woman extends People {
    //老婆
    private Man husband;

    public Man getHusband() {
        return husband;
    }

    public void setHusband(Man husband) {
        this.husband = husband;
    }

    //购物
    public void shopping() {
        System.out.println("商场购物真开心!!!");
    }

    //生孩子 先判断是否有老公,如果有老公就创建一个对象一半是女孩一般是男孩
    public People haveBaby() {
        /*
         * ·1先判断有没有老公
         * ·2如果条件成立就执行生孩子的逻辑
         * ·3条件不成立就返回一个null
         *
         * */
        //定义一个空people类型的变量
        People p = null;

        if (husband == null) {
            return null;
        } else {
            //表明有老公 可以生孩子
            Random r = new Random();//1  0
            if (r.nextInt(2) == 0) {
                //男孩
                Man boy = new Man();
                // return boy;
                p = boy;
            } else {
                //女孩
                Woman girl = new Woman();
                //return girl;
                p = girl;
            }
        }
        return p;
    }
}

测试类:

    public static void main(String[] args) {
        //测试生孩子  男孩就玩lol  女孩就购物
        Man man = new Man();
        Woman woman = new Woman();
        man.setWife(woman);
        woman.setHusband(man);

        People people = woman.haveBaby();//向上转型
        if (people == null) {
            System.out.println("你没有老公!");
        } else {
            if (people instanceof Man) {
                Man m = (Man) people;//向下转型
                m.lol();
            } else if (people instanceof Woman) {
                Woman w = (Woman) people;//向下转型
                w.shopping();
            }
        }

    }

以上是关于多态练习题的主要内容,如果未能解决你的问题,请参考以下文章

多态的再练习

java 代码片段

多态 --- 练习题

每个人单核苷酸多态性(SNP)形成的原因是啥?

《C#零基础入门之百识百例》(五十六)多态介绍 -- 简单工厂模式

Java面向对象练习题多态测试