在千锋逆战班学习第二十一天

千锋逆战班
在千锋"逆战”学习第20天,
每个人生阶段都需要努力去扮好自己的角色,越努力越轻松,越坚强越幸运!
加油!

2( toString方法)写出下列代码的运行结果

class Student{
	private int age;
	private String name;
	public  Student() {}
	public Student(String name,int age) {
		this.name=name;
		this.age=age;
	}
	public String toString() {
		return name+"  "+age;
	}
}
public class TestStudent {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Student stu1=new Student();
		Student stu2=new Student("Tom",18);
		System.out.println(stu1);
		System.out.println(stu2);
	}

}
null  0
Tom  18

3( equals )写出下面程序运行的结果

public class TestEquals {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String str1=new String("Hello");
		String str2=new String("Hello");
		System.out.println(str1.equals(str2));
		System.out.println(str1==str2);
	}
}
true
false

4( getClass )写出下面程序运行的结果

class Animal{}
class Dog extends Animal{
	
}
public class TestGetClass {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Animal a1=new Dog();
		Animal a2=new Animal();
		System.out.println(a1 instanceof Animal);
		System.out.println(a1.getClass()==a2.getClass());
	}

}
true
false

5

 (内部类) Java中的内部类包括
A.成员内部类
B.静态内部类
C.局部内部类
D.匿名内部类
E.公开内部类
F.抽象内部类

A B C D

6

public String toString(){ return name+"\t"+age+"\t"+sex+"\t"+salary; } public boolean equals(Object obj){ if(this==obj){ return true; } return false; }

9

在这里插入图片描述

abcd

10

interface Light{
	void shine();
}
class Lamp{
	public void on(Light light) {
		light.shine();
	}
}
public class TestLight {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Lamp lamp=new Lamp();
		class RedLight implements Light{
			public void shine() {
				System.out.println("shine in red");
			}
		}
		lamp.on(new RedLight());
		lamp.on(new Light() {
			public void shine() {
				System.out.println("shine in yellow");
			}
		});
	}

}

其他

游戏角色题目:

父类:Role(角色),是所有职业的父类
1)属性:name,表示角色的名字
2)方法:public int attack(),该方法返回值为角色的攻击对敌人的伤害

Role的第一个子类:Magicer(法师)
1)属性:魔法等级(范围为1~10)
2)方法:public int attack(),该方法返回法师的攻击对敌人造成的伤害值
      法师攻击伤害值为:魔法等级*魔法基本伤害值(固定为5)

Role的第二个子类:Soldier(战士)
1)属性:攻击伤害值
2)方法:public int attack(),该方法返回战士对敌人造成的伤害值
      战士的攻击伤害值为:其攻击伤害属性值

再设计一个Team类,表示一个组队。
1)addMember,表示组队增加一个成员
      注意:组队成员最多为6人
      提示:应当利用一个数组属性,保存所有成员
2)attackSum,表示组队所有成员进行攻击时,对敌人造成的总伤害
class Role{
	private String name;
	public int attack() {
		return 0;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
}
class Magicer extends Role{
	private int level;
	public int getLevel() {
		return level;
	}
	public void setLevel(int level) {
		if(level>1&&level<10) {
			this.level = level;
		}else {
			System.out.println("魔法等级不在范围内!");
		}
	}
	public int attack() {
		return getLevel()*5;
	}
	
}
class Soldier extends Role{
	private int hurt;
	public int attack() {
		return getHurt();
	}
	public int getHurt() {
		return hurt;
	}
	public void setHurt(int hurt) {
		this.hurt = hurt;
	}
}
class Team{
	static int size=0;
	static Role roles[] = new Role[6];
	public void addMember(Role role) {
		roles[size]=role;
		size++;
	}
	public int attackSum() {
		int sum=0;
		for (int j = 0; j < size; j++) {
			sum += roles[j].attack();
		}
		return sum; 
	}
}
public class Test8 {

}

1) 创建 Role 接口,包含两个方法:
    a) int attack(); 表示攻击,返回值表示对敌人的伤害
    b) void practise(); 表示练习。练习之后对敌人的伤害会增加。
2) 创建 NamedRole 类,该类为一个抽象类,实现了 Role 接口,并有两个属性:
name 和 age, 表示角色的名字和年龄。
3) 增加 MagicStick 接口。该接口表示法师使用的法杖。接口中包含一个方法,
方法为: int fire()
4) 为 MagicStick 类增加两个实现类,分别为 GreenStick 和 BlackStick。其
中,对于这两个类的 fire 方法:
    a) GreenStick 平时返回 1,夏天(6~8 月)使用时返回 2
    b) BlackStic 奇数月返回 1,偶数月返回 2
5) 修改 Magicer 类
    a) 为法师类增加 MagicStick 类的属性 stick,表示法师使用的法杖。
    b) 让其继承自 NamedRole 类,并实现 attack 和 practise 功能。其中
        i. attack 返回值为法师的魔法等级(level) *每一级的固定伤害(5)
        ii. practise()方法:
    1. 当法师的 stick 属性为 null 时,调用 practise 则 level++
    2. 当法师的 stick 不为 null 时,调用 practise 方法时,法师的
等级 level 满足: level = level + 1 + stick.fire();即:法师的
    等级增加为 1+stick 属性的 fire 方法的返回值
6) 增加 Weapon 接口,表示战士使用的武器。Weapon 接口中定义了两个方法:
void setSoldier(Soldier s); 该方法表示设置武器的使用者
int fire(); 该方法的返回值表示战士使用该武器时,对敌人的伤害值
7) 为 Weapon 增加两个实现了,一个为 Bolo,表示大刀,一个为 Pike,表示
长矛。
对这两个实现类的描述如下:
Bolo : 当 soldier 的年龄大于等于 18 岁时,fire 方法返回 100
当 soldier 年龄小于 18 岁时,fire 方法返回 50
Pike:Pike 类有一个属性:name,表示长矛的名字。
当长矛的名字和战士的名字一致时,fire 方法返回 1000;
当长矛的名字和战士的名字不一致时,fire 方法返回 25
8) 修改 Soldier 类
    a) 为 Soldier 类增加一个 Weapon 属性,表示战士的武器
    b) 让其继承自 NamedRole 类,并实现 attack 和 practise 功能。其中
        i. Soldier 的 attack 返回值为战士的 hurt 值与武器的 fire 方法返
回值的和,即 总攻击输出 = 战士的徒手伤害值 + 武器的伤害值
        ii. practise()方法:每调用一次则战士的 hurt 值+10
import java.util.Date;

interface Role{
	int attack();
	void practise();
}
interface MagicStick{
	int fire();
}
interface weapon{
	void setSoldier(Soldier s);
	int fire();
}
class Bolo implements weapon{
	private Soldier s;
	public void setSoldier(Soldier s) {
		this.s=s;
	}
	public int fire() {
		if(s.getAge()>=18) {
			return 100;
		}else {
			return 50;
		}
	}
}
class Pick implements weapon{
	private Soldier s;
	private String name;
	public Pick(String name) {
		// TODO Auto-generated constructor stub
		this.name=name;
	}
	
	public int fire() {
		if (s.getName().equals(name)){
			return 1000;
		}else {
			return 25;
		}
	}
	public void setSoldier(Soldier s) {
		this.s = s;
	}
}
class GreenStick implements MagicStick{
	public int fire() {
		Date d=new Date();
		if (d.getMonth() >=6 && d.getMonth() <= 8){
			return 2;
		}else {return 1;}
	}
}
class BlackStick implements MagicStick{
	public int fire(){
		Date d = new Date();
		if (d.getMonth() % 2 == 0){
			return 2;
		}else return 1;
	}
}
abstract class NamedRole implements Role{
	private String name;
	private int age;
	public NamedRole(){}
	public NamedRole(String name, int age) {
		this.name = name;
		this.age = age;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
}
class Soldier extends NamedRole{
	private int hurt;
	private weapon weapon;
	
	public Soldier(){}
	
	public Soldier(String name,int age,  int hurt) {
		super(name, age);
		this.hurt = hurt;
	}

	public weapon getWeapon() {
		return weapon;
	}

	public void setWeapon(weapon weapon) {
		this.weapon = weapon;
	}

	public int getHurt() {
		return hurt;
	}

	public void setHurt(int hurt) {
		this.hurt = hurt;
	}
	
	public int attack(){
		int result = hurt;
		if (weapon != null){
			result += weapon.fire();
		}
		return result;
	}

	public void practise() {
		hurt += 10;
	}
}
class Magicer extends NamedRole{
	MagicStick stick;
	private int level=1;
	public Magicer(){}	
	public Magicer(String name, int age,  int level) {
		super(name, age);
		if (level > 10 || level < 1){
			System.out.println("level error!");
			return;
		}
		this.level = level;
	}
	public int getLevel() {
		return level;
	}
	public void setLevel(int level) {
		if(level>1&&level<10) {
			this.level = level;
		}else {
			System.out.println("魔法等级不在范围内!");
		}
	}
	public int attack() {
		return getLevel()*5;
	}
	public void practise() {
		level++;
		if(stick!=null) {
			level+=stick.fire();
		}
	}
	public MagicStick getStick() {
		return stick;
	}

	public void setStick(MagicStick stick) {
		this.stick = stick;
	}
	
}
public class Test10 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		MagicStick ms1 = new GreenStick();
		MagicStick ms2 = new BlackStick();
		Magicer m1 = new Magicer("John", 20, 5);
		Magicer m2 = new Magicer("Tom", 30, 8);
		m1.setStick(ms1);
		m2.setStick(ms2);
		
		System.out.println(m1.attack());
		System.out.println(m2.attack());
		
		m1.practise();
		m2.practise();
		
		System.out.println(m1.attack());
		System.out.println(m2.attack());
		
		
		weapon w1 = new Bolo();
		weapon w2 = new Pick("Jerry");
		Soldier s1 = new Soldier("Tom", 19, 100);
		Soldier s2 = new Soldier("Jerry", 25, 150);
		s1.setWeapon(w1);
		w1.setSoldier(s1);
		
		s2.setWeapon(w2);
		w2.setSoldier(s2);
		
		System.out.println(s1.attack());
		System.out.println(s2.attack());
		
		s1.practise();
		s2.practise();
		
		System.out.println(s1.attack());
		System.out.println(s2.attack());
		}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值