Q9
2
null 0
Tom 18
3
ture
false
4
ture
false
5
ABCD
6
class Worker{
String name;
int age;
double salary;
Address addr;
public Worker(){}
public Worker(String name, int age, double salary){
this.name = name;
this.age = age;
this.salary = salary;
}
public void work(){}
public void work(int hours){}
@Override
public String toString() {
return "Worker [name=" + name + ", age=" + age + ", salary=" + salary + ", addr=" + addr + "]";
}
@Override
public boolean equals(Object obj){
return this == obj;
}
}
9
ABCD
10
interface Light{
void shine();
}
class Lamp{
public void on(Light light){
light.shine();
}
}
public class TestLamp{
public static void main(String[] args){
Lamp lamp = new Lamp();
class RedLight implements Light{
@Override
public void shine() {
System.out.println("shine in red");
}
}
lamp.on(new RedLight());
Light l = new Light() {
@Override
public void shine() {
System.out.println("shine in yellow");
}
};
lamp.on(l);
}
}
QD
8 & 10
package game1;
import java.util.Calendar;
public class TestGame {
public static void main(String[] args) {
MagicStick stick1 = new GreenStick();
MagicStick stick2 = new GreenStick();
Weapon weapon1 = new Bolo();
Weapon weapon2 = new Pike("jimbo");
Role role1 = new Magicer("tom", 18, 0, stick2);
Role role2 = new Soldier("jack", 20, 5);
Role role3 = new Magicer("jinne", 17, 0, stick1);
Role role4 = new Soldier("jimbo", 18, 5);
weapon1.setSoldier((Soldier)role2);
weapon2.setSoldier((Soldier)role4);
Team team1 = new Team();
team1.addMember(role1);
team1.addMember(role2);
team1.addMember(role3);
team1.addMember(role4);
System.out.println(team1.attackSum());
role1.practise();
role2.practise();
System.out.println(team1.attackSum());
}
}
interface Role{
int attack();
void practise();
}
abstract class NamedRole implements Role{
String name;
int age;
}
interface MagicStick{
int fire();
}
class GreenStick implements MagicStick{
@Override
public int fire() {
int month = Calendar.MONTH;
if(month > 5 && month < 9){
return 1;
}
return 2;
}
}
class BlackStick implements MagicStick{
@Override
public int fire() {
int month = Calendar.MONTH;
if(month % 2 == 0){
return 2;
}
return 1;
}
}
interface Weapon{
void setSoldier(Soldier s);
int fire();
}
class Bolo implements Weapon{
private Soldier s;
@Override
public void setSoldier(Soldier s) {
s.setWeapon(this);
this.s = s;
}
@Override
public int fire() {
if(s.age >= 18){
return 100;
}
return 50;
}
}
class Pike implements Weapon{
private Soldier s;
private String name;
public Pike(String name) {
super();
this.name = name;
}
@Override
public void setSoldier(Soldier s) {
s.setWeapon(this);
this.s = s;
}
@Override
public int fire() {
if(s.name.equals(this.name)){
return 1000;
}
return 25;
}
}
class Magicer extends NamedRole{
private int level;
private MagicStick stick;
public Magicer(String name, int age, int level, MagicStick stick) {
super();
super.age = age;
super.name = name;
this.level = level;
this.stick = stick;
}
@Override
public int attack() {
return this.level * 5;
}
public int getMagicLevel() {
return level;
}
public void setMagicLevel(int level) {
if(level > 0 && level < 11){
this.level = level;
}
}
@Override
public void practise() {
if(this.stick == null && this.level < 11){
this.level++;
}else if(this.level < 11){
level += 1 + stick.fire();
}
}
}
class Soldier extends NamedRole{
private int hurt;
private Weapon weapon;
public Soldier(String name, int age, int hurt) {
super();
super.age = age;
super.name = name;
this.hurt = hurt;
}
public Weapon getWeapon() {
return weapon;
}
public void setWeapon(Weapon weapon) {
this.weapon = weapon;
}
@Override
public int attack() {
int sumAttack = this.hurt;
if(weapon != null){
sumAttack += weapon.fire();
}
return sumAttack;
}
public int getAttackNum() {
return hurt;
}
public void setAttackNum(int hurt) {
this.hurt = hurt;
}
@Override
public void practise() {
this.hurt += 10;
}
}
class Team {
private Role[] team = new Role[6];
public void addMember(Role role){
for(int i = 0; i < team.length; i++){
if(team[i] == null ){
team[i] = role;
return;
}
}
System.out.println("队伍已满");
}
public int attackSum(){
int attackSum = 0;
for(int i = 0; team[i] != null && i < team.length; i++){
attackSum += team[i].attack();
}
return attackSum;
}
}
笔记
