一道java题目大神们看看代码该怎么做,还有重载的含义

(1)编写抽象类Pet,属性(实现封装):名字,年龄,体重;抽象方法speak,eat重载toString()方法,输出各成员变量值。(2)编写Bird类继承Pet,特有... (1)编写抽象类Pet, 属性(实现封装):名字,年龄,体重; 抽象方法speak,eat 重载toString()方法,输出各成员变量值。

(2)编写Bird类继承Pet,特有属性(实现封装):flySpeed;重载toString()方法,输出各成员变量值。

(3)编写Cat类继承Pet,特有属性:颜色 重载toString()方法,输出各成员变量值。

(4)编写Dog类继承Pet,特有属性:品种 重载toString()方法,输出各成员变量值。

(5)创建6个元素的数组,分别存放2个Cat、2个Dog和2个Bird对象 将数组元素按重量倒序排序,然后打印各对象的字符串表示(toString)
展开
 我来答
天之鹰1986
2016-10-25 · TA获得超过278个赞
知道小有建树答主
回答量:727
采纳率:75%
帮助的人:228万
展开全部

主要思路;

  1. 。创建父类子类你自己看着敲进去,比较简单。

  2. 每个函数都要有一个带参数的构造函数;当数组中的参数传入时可以对子类对象初始化。

  3. 最后比较排序我是用另一个数组接收原数组元素(对象)中的getWeight() 方法的返回值用于排序,然后在找到对应的值打出来就能达到你要的效果了。

父类:

package playgame;


public abstract class Pet {

private String name;

private int age;

private double weight;

public void getInformation(String name,int age,double weight){

this.name=name;

this.age=age;

this.weight=weight;

}

public double getWeight(){

return weight;

}

public String toString(){

  String str="name="+name+",age="+age+",weight"+weight;

  return str;

}

public abstract void speak();

public abstract void eat();


}

package playgame;


public class Bird extends Pet{

private String name;

private double weight;

private double flyspeed;

public Bird(String name,double flyspeed,double weight){

this.name=name;

this.flyspeed=flyspeed;

this.weight=weight;

}

public double getWeight(){

return weight;

}

public void speak(){

System.out.println("我是一只小小鸟");

}

public void eat(){

System.out.println("我最爱吃虫子");

}

    public String toString(){

     String str="name="+name+",flyspeed="+flyspeed+",weight="+weight;

     return str;

    }

}

package playgame;


public class Cat extends Pet {

    private String name;

    private String coulour;

    private double weight;

    public Cat(String name,String coulour,double weight){

     this.name=name;

     this.coulour=coulour;

     this.weight=weight;

    }

    public double getWeight(){

     return weight;

    }

public void speak() {

System.out.println("我是一只猫");

}

public void eat() {

System.out.println("我爱吃鱼");

}

public String toString(){

String str="name="+name+",coulour="+coulour+",weight="+weight;

return str;

}


}

package playgame;


public class Dog extends Pet {

  private String name;

  private double weight;

  private String variety;

  public Dog(String name,String variety,double weight){

 this.name=name;

 this.variety=variety;

 this.weight=weight;

  }

  public double getWeight(){

return weight;

}

public void speak() {

       System.out.println("我是一只狗");

}

public void eat() {

System.out.println("我爱吃骨头");

}

public String toString(){

String str="name="+name+",weight="+weight+",variety="+variety;

return str;

}


}

package playgame;


import java.util.Arrays;


public class Text1 {

public static void main(String[] args) {

Pet arr[]={new Dog("狗","藏獒",180000.5),new Dog("狗","藏獒",180006.5),

new Cat("猫","红色",18000.5),new Cat("猫","黑色",18000.5),

new Bird("鸟",20.5,180), new Bird("鸟",22.5,187)};

double arr1[]=new double[6];

  for(int i=0;i<6;i++){

  arr1[i]=arr[i].getWeight();

  }

  Arrays.sort(arr1);

  for(int i=0;i<6;i++){

  for(int j=0;j<6;j++){

  if(arr1[i]==arr[j].getWeight()){

  System.out.println(arr[j].toString()+"\t");

  break;

  }

  }

  }


}


}

最后面这个是主函数的类。。请他三个子类在中间,有不明白的地方在追问。

更多追问追答
追问
请问:如果用构造函数该怎么改呢?
我们还没学过Return的方法这样做,看下来还挺模糊的
还有后面的子类的age怎么就没有了呢
最后的输出能够不用数组吗
谢谢
追答
1.   我没看明白你说的第一个问题的意思。
2. 至于说return 这个主要用于函数里返回值用的,用法比较简单,没有其他要求,类似于 int char 之类的关键字,你记住就可以了。

3. age 属于其中的一个变量,如果你需要这个变量就在父类函数中定义一下。(子类中定义不行,因为new对象的时候是采用父类的引用,如果定义在子类中,对象是无法调用该变量的。)
4.最后输出采用数组比较方便,如果你真不用数组的话,那你就一条条的打印。
跳凡胜8170
2016-10-25 · TA获得超过129个赞
知道答主
回答量:203
采纳率:0%
帮助的人:77.1万
展开全部
这段代码...你需要重新学下基本语法, 或者这实际上是改错题?
public class Information {
public int inlfo(int id){
return a;// [a] 未定义的标识符
}
public int inlfo(int id, int age){
return id,age; //你的意思大概是返回多个对象吧, 函数只能返回一个对象, 所以根本不存在这样的语法.
}
public int inlfo(int id, int age int TEL){//漏了逗号
return id,age,TEL; //同上
}
public static void mian (Sting[] args)
{
System.out.println("id"+sh.inlfo(01));//[sh] 未定义的标识符, 加上Information sh = new Information ();
//01 是什么? string还是int? 如果是字符串那应当加上"", 但与函数定义不同, 无法通过编译(string类型无法隐式转换为int类型). 如果是数字, 只要写1就好了, 写01貌似会有编译器警告(记不清楚了, 不确定);
System.out.println("id"+sh.inlfo(01,20));
System.out.println("id"+sh.inlfo(01,20,3359112));
}
}

修改参考:
public class Information {
public String inlfo(int id) {
//虽然任何类型都可以隐式转换为字符串, 但初学者最好使用显式类型转换, 这样可以省去很多不必要的麻烦
return String.valueOf(id);
}

public String inlfo(int id, int age) {
return String.valueOf(id) + "," + String.valueOf(age);
}

public String inlfo(int id, int age, int TEL) {
return String.valueOf(id) + "," + String.valueOf(age) + "," String.valueOf(TEL);
}

public static void mian (Sting[] args) {
Information sh = new Information();
System.out.println("id" + sh.inlfo(1));
System.out.println("id" + sh.inlfo(1, 20));
System.out.println("id" + sh.inlfo(1, 20, 3359112));
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式