m0_65836247 2021-12-27 01:04 采纳率: 100%
浏览 64
已结题

初学者 初学者这个该怎么写急

问题遇到的现象和发生背景
问题相关代码,请勿粘贴截图
  1. 设计一个父类AbstractModel类,
     有成员变量: 
         姓名name
         腰围 double类型
         臀围 double类型
         胸围 double类型
         
     有普通非static方法:
         走台方法walkThrough(),每个子类模特走台方式完全相同【不用重写】
         
         换衣服抽象方法changeClothes(),每个子类模特换衣服方式完全 不 相同【重写】
         
     现在有如下,子类:
         T台模特
         广告模特
         平面模特
         
         
    
    请使用标准封装【private修饰】+继承+方法重写的方式完成该案例
    测试类中,创建每个子类对象,然后分别调用一下两个方法 在测试类中,请实现如下效果:
     1. 分别给每个子类创建2个对象,每个对象调用方法测试:1. 走台方法walkThrough 2.换衣服抽象方法changeClothes
     2. 希望打印对象的时候,实现效果如下:[姓名,胸围,腰围] toString方法
     3.     判断两个T台模特对象,是否相等依据:胸围+臀围+腰围 equals方法
         【友情提示:因为private修饰的父类成员变量不能直接使用,只能通过getXxx/setXxx方法简介访问】
         判断两个广告模特对象,是否相等依据:姓名+胸围
         判断两个平面模特对象,是否相等依据:胸围+腰围
    
    运行结果及报错内容
我的解答思路和尝试过的方法
我想要达到的结果
  • 写回答

2条回答 默认 最新

  • iDiry 2021-12-27 10:16
    关注

    AbstractModel

    public abstract class AbstractModel {
    
        private String name;
    
        private double waistline;
    
        private double hipline;
    
        private double bust;
    
        public void walkThrough() {
            System.out.println(String.format("模特%s走台操作", name));
        }
    
        @Override
        public int hashCode() {
            return Objects.hash(name, waistline, hipline, bust);
        }
    
        @Override
        public String toString() {
            return "[" +
                    "name='" + name + '\'' +
                    ", bust=" + bust +
                    ", waistline=" + waistline +
                    ']';
        }
    
        public abstract void changeClothes();
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public double getWaistline() {
            return waistline;
        }
    
        public void setWaistline(double waistline) {
            this.waistline = waistline;
        }
    
        public double getHipline() {
            return hipline;
        }
    
        public void setHipline(double hipline) {
            this.hipline = hipline;
        }
    
        public double getBust() {
            return bust;
        }
    
        public void setBust(double bust) {
            this.bust = bust;
        }
    }
    

    TModel

    public class TModel extends AbstractModel{
    
        public TModel(String name,double waistline,double hipline,double bust) {
            this.setName(name);
            this.setWaistline(waistline);
            this.setHipline(hipline);
            this.setBust(bust);
        }
    
        @Override
        public void changeClothes() {
            System.out.println(String.format("T台模特%s换衣操作",this.getName()));
        }
    
        @Override
        public boolean equals(Object o) {
            if (this == o) return true;
            if (o == null || getClass() != o.getClass()) return false;
            AbstractModel that = (AbstractModel) o;
            if (o instanceof TModel) {
                //判断两个T台模特对象,是否相等依据:胸围+臀围+腰围
                return Double.compare(that.getWaistline(), this.getWaistline()) == 0 && Double.compare(that.getHipline(), this.getHipline()) == 0 && Double.compare(that.getBust(), this.getBust()) == 0;
            } else if (o instanceof AdModel) {
                //判断两个广告模特对象,是否相等依据:姓名+胸围
                return Double.compare(that.getWaistline(), this.getWaistline()) == 0 && that.getName().equalsIgnoreCase(this.getName());
            }
            //判断两个平面模特对象,是否相等依据:胸围+腰围
            return Double.compare(that.getWaistline(), this.getWaistline()) == 0 && Double.compare(that.getBust(), this.getBust()) == 0;
        }
    }
    

    PModel

    public class PModel extends AbstractModel {
    
        public PModel(String name, double waistline, double hipline, double bust) {
            this.setName(name);
            this.setWaistline(waistline);
            this.setHipline(hipline);
            this.setBust(bust);
        }
    
        @Override
        public void changeClothes() {
            System.out.println(String.format("平面模特%s换衣操作", this.getName()));
        }
    
        @Override
        public boolean equals(Object o) {
            if (this == o) return true;
            if (o == null || getClass() != o.getClass()) return false;
            AbstractModel that = (AbstractModel) o;
            if (o instanceof TModel) {
                //判断两个T台模特对象,是否相等依据:胸围+臀围+腰围
                return Double.compare(that.getWaistline(), this.getWaistline()) == 0 && Double.compare(that.getHipline(), this.getHipline()) == 0 && Double.compare(that.getBust(), this.getBust()) == 0;
            } else if (o instanceof AdModel) {
                //判断两个广告模特对象,是否相等依据:姓名+胸围
                return Double.compare(that.getWaistline(), this.getWaistline()) == 0 && that.getName().equalsIgnoreCase(this.getName());
            }
            //判断两个平面模特对象,是否相等依据:胸围+腰围
            return Double.compare(that.getWaistline(), this.getWaistline()) == 0 && Double.compare(that.getBust(), this.getBust()) == 0;
        }
    }
    

    AdModel

    public class AdModel extends AbstractModel{
    
        public AdModel(String name,double waistline,double hipline,double bust) {
            this.setName(name);
            this.setWaistline(waistline);
            this.setHipline(hipline);
            this.setBust(bust);
        }
    
        @Override
        public void changeClothes() {
            System.out.println(String.format("广告模特%s换衣操作",this.getName()));
        }
    
        @Override
        public boolean equals(Object o) {
            if (this == o) return true;
            if (o == null || getClass() != o.getClass()) return false;
            AbstractModel that = (AbstractModel) o;
            if (o instanceof TModel) {
                //判断两个T台模特对象,是否相等依据:胸围+臀围+腰围
                return Double.compare(that.getWaistline(), this.getWaistline()) == 0 && Double.compare(that.getHipline(), this.getHipline()) == 0 && Double.compare(that.getBust(), this.getBust()) == 0;
            } else if (o instanceof AdModel) {
                //判断两个广告模特对象,是否相等依据:姓名+胸围
                return Double.compare(that.getWaistline(), this.getWaistline()) == 0 && that.getName().equalsIgnoreCase(this.getName());
            }
            //判断两个平面模特对象,是否相等依据:胸围+腰围
            return Double.compare(that.getWaistline(), this.getWaistline()) == 0 && Double.compare(that.getBust(), this.getBust()) == 0;
        }
    }
    

    测试类

    public class test {
    
        public static void main(String[] args) {
            /*
             1. 分别给每个子类创建2个对象,每个对象调用方法测试:1. 走台方法walkThrough 2.换衣服抽象方法changeClothes
             */
            //实例化T台模特
            AbstractModel TModel1 = new TModel("tmodel1", 1, 1, 1);
            AbstractModel TModel2 = new TModel("tmodel2", 1, 3, 1);
    
            //T台模特行为
            TModel1.walkThrough();
            TModel1.changeClothes();
            TModel2.walkThrough();
            TModel2.changeClothes();
    
            //实例化广告模特
            AbstractModel AdModel1 = new AdModel("admodel1", 2, 1, 1);
            AbstractModel AdModel2 = new AdModel("admodel2", 2, 3, 1);
    
            //广告模特行为
            AdModel1.walkThrough();
            AdModel1.changeClothes();
            AdModel2.walkThrough();
            AdModel2.changeClothes();
    
            //实例化平面模特
            AbstractModel PModel1 = new PModel("pmodel1", 3, 1, 1);
            AbstractModel PModel2 = new PModel("pmodel2", 3, 3, 1);
    
            //平面模特行为
            PModel1.walkThrough();
            PModel1.changeClothes();
            PModel2.walkThrough();
            PModel2.changeClothes();
    
            /*
             2. 希望打印对象的时候,实现效果如下:[姓名,胸围,腰围] toString方法
             */
            System.out.println(PModel1);
    
            /*
             3. 判断两个T台模特对象,是否相等依据:胸围+臀围+腰围 equals方法
             */
    
            System.out.println(PModel1.equals(PModel2));
        }
    }
    

    运行结果

    模特tmodel1走台操作
    T台模特tmodel1换衣操作
    模特tmodel2走台操作
    T台模特tmodel2换衣操作
    模特admodel1走台操作
    广告模特admodel1换衣操作
    模特admodel2走台操作
    广告模特admodel2换衣操作
    模特pmodel1走台操作
    平面模特pmodel1换衣操作
    模特pmodel2走台操作
    平面模特pmodel2换衣操作
    [name='pmodel1', bust=1.0, waistline=3.0]
    true
    
    Process finished with exit code 0
    

    这是大概的代码,如有错误请谅解

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 1月4日
  • 已采纳回答 12月27日
  • 创建了问题 12月27日

悬赏问题

  • ¥15 对于这个复杂问题的解释说明
  • ¥50 三种调度算法报错 采用的你的方案
  • ¥15 关于#python#的问题,请各位专家解答!
  • ¥200 询问:python实现大地主题正反算的程序设计,有偿
  • ¥15 smptlib使用465端口发送邮件失败
  • ¥200 总是报错,能帮助用python实现程序实现高斯正反算吗?有偿
  • ¥15 对于squad数据集的基于bert模型的微调
  • ¥15 为什么我运行这个网络会出现以下报错?CRNN神经网络
  • ¥20 steam下载游戏占用内存
  • ¥15 CST保存项目时失败