继承和多态
1、在CS枪战游戏中,有Ak47和USP两种枪,每种枪弹夹的子弹数和发射子弹数都不一样。设计一个枪战游戏程序,定义一个Gun类,该类具有2个属性:枪名称name,子弹数量的um。具有4个方法:获取子弹数目getter( )方法,上弹夹setter( )方法,发射子弹fire()方法,构造方法为属性赋初始值。
设计一个Ak47类,由Gun类继承而来,每发射一次消耗3发子弹,每装一个弹夹上30发子弹;
设计一个USP类,由Gun类继承而来,每发射一次消耗1发子弹,每装一个弹夹上12发子弹;
设计一个主类,分别创建不同的Ak47和USP对象,对象调用类里面的方法,装子弹,连续发射若干次(具体次数通过键盘输入),显示枪里面还剩下多少子弹?
package qiang;
abstract class Gun
{
String name;
int num;
int id;
public static int count=0;
Gun(String name,int num)
{
this.name=name;
this.num=num;
this.id=Gun.count++;
}
public void setter()
{
System.out.println("枪名:"+this.name+"子弹数:"+num+"枪手ID:"+id);
}
public String getter_1()
{
return name;
}
public int getter_2()
{
return num;
}
public abstract void fire(int y);
}
class Ak47 extends Gun
{
Ak47(String name,int num)
{
super(name,num);
}
public void fire(int y)
{
for(int x=1;x<=y;x++)
{
num-=3;
}
System.out.println("AK47此时还剩的子弹为:"+num);
}
}
class Usp extends Gun
{
Usp(String name, int num)
{
super(name, num);
}
public void fire(int y)
{
for(int x=1;x<=y;x++)
{
num-=1;
}
System.out.println("Usp还剩的子弹是:"+num);
}
}
class test62
{
public static void main(String[] args)
{
Ak47 ak=new Ak47("AK47_1",30);
ak.setter();
ak.fire(8);
Usp usp=new Usp("Usp_1",12);
usp.setter();
usp.fire(8);
}
}
2、请编程实现动物世界的继承关系:
动物(Animal)具有行为:吃(eat)、睡觉(sleep)
具体的动物包括:兔子(Rabbit),老虎(Tiger)
这些动物吃的行为各不相同(兔子吃草,老虎吃肉);但睡觉的行为是一致的。
请通过继承实现以上需求,并编写测试类AnimalTest进行测试。
package test6;
class Animal
{public void sleep()
{
System.out.println("动物正在睡觉");
}
public void eat()
{
System.out.println("动物正在吃饭");
}
}
class Tigger extends Animal
{public void eat()
{
System.out.println("老虎吃肉");
super.eat();
}
}
class Rabbit extends Animal
{public void eat()
{
System.out.println("兔子吃草");
super.eat();
}
}
public class test61
{public static void main(String[] args)
{
Tigger t=new Tigger();
t.sleep();
t.eat();
Rabbit r=new Rabbit();
r.sleep();
r.eat();
}
}
``