(一)、写一个怪物的类,类中有属性姓名(name),攻击力(attack),有打人的方法(fight)。(方法的重写)...

 
(一)、写一个怪物的类,类中有属性姓名(name),攻击力(attack),有打人的方法(fight)。
再写两个子类:
红猪的类:类中有属性姓名(name),攻击力(attack),颜色(color)。红猪也有一个打人的方法(fight),要求在此方法中输出“XX猪是XX颜色的,打掉了人XX点血”。
蛇类:类中有属性姓名(name),有攻击力属性(attack),有几条脚属性(foot)。蛇也有一个打人的方法
(fight),要求在此方法中输出“XX蛇用XX条脚跑到人面前去打人,打掉了人XX点血”。
写一个测试类,生成一只红猪,调用此红猪的打人方法,观察结果。再生成一条蛇,调用此蛇的打人方法。
(注意:代码的重用,及方法重写带来的多态行为)
package monster;
public class Monster {
 String name;
 int attack;
 public void fight(){
  
 }
}
package monster;
public class Redpig extends Monster{
 String a1=super.name="s";
 int a2=super.attack=2;
 String color="红色";
 @Override
 public void fight() {
  // TODO Auto-generated method stub
            System.out.println(a1+"猪是 "+color+"颜色的"+",打掉了人"+a2+"点血");
 }
}
package monster;
public class se extends Monster{
 int foot=10;
 String a1=super.name="se";
 int a2=super.attack=112;
 String color="红色";
 public void fight() {
  // TODO Auto-generated method stub
            System.out.println(a1+"蛇用 "+foot+"条脚到人面前去打人,"+",打掉了人"+a2+"点血");
 }
}
package monster;
public class test {
 public static void main(String[] args) {
  // TODO Auto-generated method stub
  Redpig pig=new Redpig();
  pig.fight();
  se ss=new se();
  ss.fight();
 }
}
(二)、写一个枪类(Gun),类中有属性:品种(进口枪还是国产枪)type,重量weight。还有一个开枪的方法(shoot),输出“开枪了”。两个子类是:
手枪类(HandGun):类中有属性品种,重量。还有一个开枪的方法,输出“XX品种的手枪,重XX公斤,一颗子弹打出去了”。
机枪类(machineGun):类中有属性品种,重量。还有一个开枪的方法,输出“XX品种的机枪,重XX公斤,一连串的子弹打出去了”。
测试类中定义一个枪的变量,用此变量记录一个手枪的对象,调用这把枪的开枪方法,注意观察输出的结果,是调用的枪的开枪方法,还是调用的手枪的开枪方法。再生成一把机枪的对象放入到这个枪的变量中去,又调用这把枪的开枪方法,观察结果。
(注意:把儿子当老子看后,调用的方法还是儿子的)
package weaoan;
public class Bullen extends Weapen{
 public Bullen() {
  super();
  super.Power=100.2;
  super.speed=2222;
  this.type="机枪子弹";
  // TODO Auto-generated constructor stub
 }
 private String type;
 public String getType() {
  return type;
 }
 public void setType(String type) {
  this.type = type;
 }
 public void Attack(){
  System.out.println("我是"+getType()+", 速度"+this.speed+",攻击力"+super.Power);
  }
}
package weaoan;
public class Tank extends Weapen {
 private String dir;
 public Tank() {
  super();
  super.Power=100.32;
  super.speed=10000;
  this.dir="上";
  // TODO Auto-generated constructor stub
 }
 
 public String getDir() {
  return dir;
 }
 public void setDir(String dir) {
  this.dir = dir;
 }
 public void  Attack(){
  System.out.println("我是坦克,向"+getDir()+"方向运动,速度"+this.speed+",攻击力"+super.Power);
 }
}
package weaoan;
public class Weapen {
 
 double Power;
 double speed;
 public Weapen() {
 
  // TODO Auto-generated constructor stub
 }
}
package weaoan;
public class Text {
public static void main(String[] args) {
 Tank tk=new Tank();
 tk.Attack();
 Bullen Bl=new Bullen();
    Bl.Attack();
}
}                                                                                                                                                    



 

转载于:https://www.cnblogs.com/www-hsy-com/p/8111645.html

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 好的,以下是用中文回复的student代码: ``` public class Student { private String name; private int age; public Student(String name, int age) { this.name = name; this.age = age; } // getter和setter方法省略 } ``` 这个包含了两个属性:name和age,并提供了一个有参构造方法,可以通过传入name和age来创建一个Student对象。 ### 回答2: 学生是我们生活中不可或缺的一部分,而定义一个学生也是程序设计过程中不可或缺的一部分。一个完整的学生应该包括学生的姓名和年龄这两个属性,同时还应该提供有参构造方法。 首先,我们需要定义一个名为Student的,代码如下: ``` public class Student { private String name; private int age; } ``` 以上代码中,定义了一个名为Student的,并且声明了私有的姓名和年龄属性。接下来,我们需要提供一个有参构造方法,让用户能够在创建Student对象时初始化学生的姓名和年龄属性。代码如下: ``` public class Student { private String name; private int age; public Student(String name, int age) { this.name = name; this.age = age; } } ``` 以上代码中,定义了一个名为Student的,并在构造方法中接收两个参数,分别是姓名和年龄。通过使用this关键字,我们将构造方法中接收的参数赋值给属性name和age。此外,还要注意,构造方法的名称应该与名相同,以便于在创建对象时调用。 最后,我们还可以为学生提供方法,用于获取或修改学生的姓名和年龄属性。这里简单给出相应的代码: ``` public class Student { private String name; private int age; public Student(String name, int age) { this.name = name; this.age = age; } public String getName() { return this.name; } public int getAge() { return this.age; } public void setName(String name) { this.name = name; } public void setAge(int age) { this.age = age; } } ``` 以上代码中,我们添加了四个方法,分别是getName、getAge、setName和setAge。前两个方法用于获取学生的姓名和年龄属性,而后两个方法则用于修改学生的姓名和年龄属性。 综上所述,一个完整的学生应该包括属性方法两个部分。本文提供了一种实现含有name和age属性的Student的实现方式,读者可以依据需要在此基础上进一步实现其他方法。 ### 回答3: 首先,需要明确一个的基本结构:属性方法。我们要编写的Student需要包含name和age属性,同时需要提供有参构造方法。 在Java中,定义一个需要使用关键字class,后面跟上名,如下所示: public class Student { } 属性类中的数据,它描述了所具有的特征。对于Student,我们需要name和age属性,因此可以在类中定义如下: public class Student { String name; int age; } 在上面的代码中,我们使用了String型的name属性和int型的age属性来描述学生的名字和年龄。这里需要注意,属性型需要与它们所描述的内容相匹配。 接下来,需要提供构造方法。构造方法是用来创建一个的实例的。在Student类中,我们需要提供一个有参构造方法,以便在创建实例的时候传入学生的姓名和年龄。一个基本的有参构造方法的形式如下所示: public Student(String name, int age) { this.name = name; this.age = age; } 在上面的代码中,我们使用了关键字this来引用类中属性,以便将构造方法的参数赋值给属性。 最终,我们的Student看起来是这样的: public class Student { String name; int age; public Student(String name, int age) { this.name = name; this.age = age; } } 以上就是我们编写一个Student的基本要点。在实际开发中,我们还需要添加其他方法属性,以满足需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值