类的多态、方法的重载与重写

实现如下类,编写测试类。在测试类中编写静态方法getinstrument(),返回类型是Instument的对象,静态方法实现随机产生由那种乐器进行演奏(产生3以内的随机整数,0返回Violin对象,1返回Erhu对象,2返回Instrument对象。在main方法中给出提示语“---欢迎--姓名--学号--来到演播厅---”,创建引用对象instument,根据getinstrument()方法得到instument实例化对象,调用对象的play()方法。若返回实例化对象是二胡,将对象的上转型对象再强制转换为二胡对象,然后再调用其新增方法playing()方法。

 

import java.util.Random;

public class Test {
    
    public static void main(String[] args) {
        
        System.out.println("---欢迎--姓名--学号--来到演播厅---");
        Instument ins = getInstrument();
        if(ins instanceof Erhu) {
            ((Erhu) ins).playing();
        }else {
            ins.play();
        }
    }
    static Instument getInstrument() {
        
        Random rnd = new Random();
        int n = rnd.nextInt(3);
        Instument ins=null;
        switch(n) {
        case 0:
            ins = new Instument();
            break;
        case 1:
            ins = new Erhu();
            break;
        case 2:
            ins = new Violin();
            break;
        }
        return ins;
    }
}

class Instument{
    void play() {
        System.out.println("乐器演奏中");
    }
}
class Erhu extends Instument{
    void play() {
        System.out.println("二胡演奏中...");
    }
    void playing() {
        System.out.println("二泉映月...");
    }
}
class Violin extends Instument{
    void play() {
        System.out.println("小提琴演奏中...");
    }
}
 

您好,我是有问必答小助手,你的问题已经有小伙伴为您解答了问题,您看下是否解决了您的问题,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632

非常感谢您使用有问必答服务,为了后续更快速的帮您解决问题,现诚邀您参与有问必答体验反馈。您的建议将会运用到我们的产品优化中,希望能得到您的支持与协助!

速戳参与调研>>>https://t.csdnimg.cn/Kf0y