注册 登录
编程论坛 JAVA论坛

大一新生CS专业 关于子类与继承 求指点

Poppy辉 发布于 2016-11-08 19:22, 1369 次点击
有点靠不懂这节内容老师布置了一道作业   -编写Bird类,具有以下成员:
   鸟的学名(变量):如,画眉,麻雀
   种属(变量): 水禽 or 飞禽 or  猛禽(三种取值之一)
   最大飞行速度(变量):
   构造函数(带参数)
  -Speak函数( 模仿输出鸟的叫声 , 设为“gugu~~”声音)
    通过重载Bird,产生一个新类HawkBird, 增加以下成员:
    体重(变量)
    捕食函数:    boolean prey( Bird   obj)
    - 在prey函数中, 捕食是否能够成功(函数返回值为true)由如下条件确定。
   如果: weight>20,  则 0.9* 自身飞行速度>  参数obj( 鸟)的最大飞行速度,则能够成功捕食。
如果: weight<=20, 则 自身飞行速度>参数obj的最大飞行速度,则能够成功捕食。
   -重写speak()函数,发出的声音为”owow~~”

   -在main函数中,创建Hawkbird对象 hawk和一个Bird对象bird。
让它们输出各自的叫声(屏幕输出)
然后判断Hawkbird能否捕食成功?

附上我自己写的程序 求指点
在Bird类里:public class Bird {

    String name;
    String brand;
    int maxspe1,maxspe2;
   
    Bird (int a,int b)
    {   
        if ( name=="布谷")
        maxspe1 = a;
        
        if( name=="老鹰")
        maxspe2=b;
    }
   
    void speak()
    {
        if( name=="老鹰")
            System.out.println("gaga~");
        if( name=="布谷")
            System.out.println("gugu~");
    }

}
在HawkBird类里:
    public class HawkBird extends Bird
{
   


        

    int weight;
   
    boolean prey(Bird obj)
    {
        
        if( name=="老鹰" && weight>20 && 0.9*maxspe2>obj.maxspe1 )
            System.out.println("老鹰能捕食成功");
        
        else if( name=="老鹰" && weight<=20 && maxspe2>obj.maxspe1 )
            System.out.println("老鹰能捕食成功");
        
        else
            System.out.println("老鹰不能捕食成功");
            
        return true;
    }
   
    void speak()
    {
        System.out.println("wow~");
    }
}
在主类APP里:
public class app {

    public static void main(String[] args) {
        
        Bird bird = new Bird(23,86);
        bird.speak();
        
        HawkBird hawk = new HawkBird();
        
        hawk.speak();
    }

}

其中在HawkBird中还有错误mplicit super constructor Bird() is undefined for default constructor. Must define an explicit constructor
2 回复
#2
枫xby2016-11-10 10:22
我觉得 Bird类中的构造函数这样定义(我觉得最大速度就一个变量好了 int maxspe)
public Bird(String name,String brand,int maxspe){
    this.name = name;
    this.brand = brand;
    this.maxspe = maxspe;

}

你在HawkBird类中定义一个有参构造函数
public HawkBird(String name,String brand,int maxspe,int weight){
    super.(name,brand,maxspe);
    this.weight = weight;
}
#3
qidiao2017-01-16 19:09
... 字符串比较要用equals
1