javawushiyidao 2021-04-25 23:57 采纳率: 0%
浏览 77

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

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

 

  • 写回答

3条回答 默认 最新

  • 关注

    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("小提琴演奏中...");
        }
    }
     

    评论

报告相同问题?

悬赏问题

  • ¥15 常见滤波采样有几种?
  • ¥15 chemex:docker安装chemex过程中遇到问题
  • ¥15 关于遇到一个python,django,redis,uwsgi,nginx搭的一个企业微信修改AD密码的平台的问题!
  • ¥15 读取parquet文件某一列的数据但是输出是整个列名和格式
  • ¥15 机动目标 制导律建模问题
  • ¥100 求Java socks 转发实现Demo
  • ¥20 随身WiFi移动网络访问不了
  • ¥50 RAD_XE11.3获取android11手机的IMEI码
  • ¥15 linux的gcc命令报错
  • ¥20 如何再GIS用海岸线建立缓冲区