千锋逆战班
在千锋"逆战”学习第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());
}
}