为啥在网页上运行不了 我在Ide编译器能运行成功

来源:4-3 编程练习

慕设计6674711

2020-03-16 16:19:43

public class Fruits {
   // 私有属性:水果的形状(shape)和口感(taste)
  protected String shape;
  protected String taste;
   public Fruits(){

   }
   public Fruits(String shape, String taste) {
   }
   //通过封装实现对私有属性的get/set访问

   public String getShape() {
       return shape;
   }

   public void setShape(String shape) {
       this.shape = shape;
   }

   public String getTaste() {
       return taste;
   }

   public void setTaste(String taste) {
       this.taste = taste;
   }

   // 创建无参无返回值得方法eat(描述内容为:水果可供人们食用!)
   public void eat(){
       System.out.println("水果可供人们食用!");
   }
   // 重写equals方法,比较两个对象是否相等(比较shape,taste)


   @Override
   public boolean equals(Object obj) {

       Fruits fruits= new Fruits();
       fruits=(Fruits)obj;
       if (this.getShape()==fruits.shape&&this.getTaste()==fruits.taste)
           return true;
           else
               return false;
       }
   }


//要求Waxberry类不允许有子类
public final class  Waxberry extends Fruits{
   // 私有属性:颜色(color)
   protected String color;
   //创建构造方法,完成调用父类的构造方法,完成属性赋值
   public Waxberry(){

   }
   public Waxberry(String color,String shape,String taste){
       super(shape,taste);
       this.color=color;
   }


   //创建不允许重写的face方法,描述为:杨梅:**、**,果味酸甜适中
   public  final void face(){
       System.out.println("杨梅:"+this.color+"丶"+this.getShape()+",果味果味酸甜适中");
   }

   //重写父类eat方法,描述为:杨梅酸甜适中,非常好吃!

   @Override
   public void eat() {
       System.out.println("杨梅酸甜适中,非常好吃!");
   }

   //重写toString方法,输出的表现形式不同(输出shape,color,taste)

   @Override
   public String toString() {
       String str="杨梅的信息:果实为"+this.getShape()+"丶"+this.color+","+"酸甜适中,非常好吃!";
       return str;
   }
}


public class Banana extends Fruits{
   // 私有属性:品种(variety)
  protected   String variety;
   //创建带参构造方法为所有属性赋值
  public Banana(){

  }
  public Banana(String shape, String taste,String variety){
      super(shape,taste);
      this.variety=variety;
  }
   //创建无参无返回值的advantage方法,描述为:**果形**,果肉香甜,可供生食。
  public  void advantage(){
      System.out.println(this.variety+"果形"+this.getShape()+",果肉香甜,可供生食。");
  }
   //创建重载advantage方法(带参数color),描述为:**颜色为**
   public void advantage(String coloe){
      System.out.println(this.variety+"颜色为"+coloe);
   }
}



public class Test {
   public static void main(String[] args) {
       // 实例化2个父类对象,传入两组相同的参数值
       Fruits fru1=new Fruits();
       Fruits fru2=new Fruits();

       // 调用父类eat方法
       fru1.eat();

       // 测试重写equals方法,判断两个对象是否相等
       System.out.println("fru1和fru2的引用比较:"+fru1.equals(fru2));
       System.out.println("——————————————————————————————————————————————");
       // 实例化子类对象,并传入相关参数值
       Waxberry waxberry=new Waxberry("紫红色","圆形","果味酸甜适中");
       // 调用子类face方法和eat方法
       waxberry.face();
       waxberry.eat();
       // 测试重写toString方法,输出子类对象的信息
       System.out.println(waxberry);
       System.out.println("——————————————————————————————————————————————");
       // 实例化Banana类对象,并传入相关参数值
       Banana banana=new Banana("短而稍圆", "果肉香甜", "仙人蕉");
       // 调用子类的advantage和它的重载方法
       banana.advantage();
       banana.advantage("黄色");

   }
}

写回答

1回答

好帮手慕小尤

2020-03-16

同学你好,1. 在在线编译器中也是可以运行成功的。如下图所示:

http://img.mukewang.com/climg/5e6f425909f5090512550543.jpg

2. 展示水果口感,建议同学调用getTaste()方法。修改后代码如下:

http://img.mukewang.com/climg/5e6f450f096acfca06880116.jpg

3. 建议同学为Banana与Waxberry类中的属性创建set与get方法。

4. Fruits类中的带参构造未为属性赋值,导致展示水果的形状(shape)和口感(taste)为null,建议同学为其赋值。修改后代码如下:

http://img.mukewang.com/climg/5e6f44c009c8ed9604000130.jpg

如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~

0

0 学习 · 11489 问题

查看课程