欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

千锋20200228

程序员文章站 2024-01-28 16:54:22
...

千锋“逆战”学习第20天

      每日一句:调试完一个动态连接函数,固然值得兴奋,但真正的成功远还在无数个函数之后。
      今天学习了类的相关知识,内部类和Object类。
      下周继续加油。

作业

Question_09
2.有如下代码:

class Student {
	private String name;
	private int age;
	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) {
		Student stu1 = new Student();
		Student stu2 = new Student("Tom", 18);
		System.out.println(stu1);
		System.out.println(stu2);
	}
}
运行结果:
null 0
Tom 18

---------------------------------------------------------------------------------
3.有如下代码:

public class TestEquals {
	public static void main(String[] args) {
		String str1 = new String("Hello");
		String str2 = new String("Hello");
		System.out.println(str1.equals(str2));
		System.out.println(str1==str2);
	}
}
运行结果:
true
false

---------------------------------------------------------------------------------
4.有如下代码:

class Animal {
}

class Dog extends Animal {
}

public class TestGetClass {
	public static void main(String[] args) {
		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.为Worker类增加equals和toString方法

class Worker {
	String name;
	int age;
	double salary;

	public Worker(String name, int age, double salary) {
		super();
		this.name = name;
		this.age = age;
		this.salary = salary;
	}

	public boolean equals(Object obj) {
		if (this == obj) {
			return true;
		}
		if (obj == null) {
			return false;
		}
		if (this.getClass() != obj.getClass()) {
			return false;
		}
		Worker worker = (Worker) obj;
		if (this.name.equals(worker.name) && this.age == worker.age && this.salary == worker.salary) {
			return true;
		}
		return false;
	}

	public String toString() {
		return "Worker [name=" + name + ", age=" + age + ", salary=" + salary + "]";
	}
}

public class TestWorker {
	public static void main(String[] args) {
		Worker w1 = new Worker("tom", 30, 6000.0);
		Worker w2 = new Worker("jack", 31, 5000.0);
		Worker w3 = new Worker("tom", 30, 6000.0);

		System.out.println(w1);
		System.out.println(w2);
		System.out.println(w3);

		System.out.println(w1.equals(w2));
		System.out.println(w1.equals(w3));
	}
}
运行结果:
Worker [name=tom, age=30, salary=6000.0]
Worker [name=jack, age=31, salary=5000.0]
Worker [name=tom, age=30, salary=6000.0]
false
true

---------------------------------------------------------------------------------
9.有如下代码:

public class OuterClass {
	private int value1 = 100;
	private static int value2 = 200;
	public void method(int value3) {
		final int value4 = 400;
		class InnerClass{
			public void print(){
				/*1*/
			}
		}
	}
}
下列哪些代码放在/*1*/处编译通过
A.System.out.println(value1);
B.System.out.println(value2);
C.System.out.println(value3);
D.System.out.println(value4);

答:A B D

---------------------------------------------------------------------------------
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();
		//1.局部内部类
		
		//2.匿名内部类
		
	}
}

(1)在//1处使用局部内部类,调用lamp的on方法要求输出“shine in red”

class RedLight implements Light{
			public void shine() {
				System.out.println("shine in red");
			}
		}
		lamp.on(new RedLight());

(2)在//2处使用匿名内部类,调用lamp的on方法要求输出“shine in yellow”

lamp.on(new Light() {
			public void shine() {
				System.out.println("shine in yellow");
			}
		});

---------------------------------------------------------------------------------
Question_Difficult
8.根据类图,创建三个类,组成一个继承树,表示游戏中的角色

千锋20200228

abstract class Role {// 所有职业的父类
	private String name;// 角色名字

	public abstract int attack();

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}
}

class Magicer extends Role {
	private int level;// 魔法等级(范围:1-10)

	public int attack() {// 返回法师对敌人攻击的伤害值
		return level * 5;
	}

	public int getLevel() {
		return level;
	}

	public void setLevel(int level) {
		if (level > 0 && level < 11) {
			this.level = level;
		} else {
			System.out.println("魔法等级已到上限");
		}
	}
}

class Solider extends Role {
	private int hurt;

	public int attack() {
		return hurt;
	}

	public int getHurt() {
		return hurt;
	}

	public void setHurt(int hurt) {
		this.hurt = hurt;
	}
}

class Team {
	static int i = 0;// 组队成员数
	static Role[] roles = new Role[6];

	public void addMember(Role role) {
		roles[i++] = role;
	}

	public int attackSum() {
		int sum = 0;
		for (int j = 0; j < i; j++) {
			sum += roles[j].attack();
		}
		return sum;
	}
}

public class TestGame {
	public static void main(String[] args) {
	Magicer m = new Magicer();
		m.setName("老爹");
		m.setLevel(8);
		System.out.println("魔法师:" + m.getName() + " 伤害值:" + m.attack());
		Solider s = new Solider();
		s.setName("成龙");
		s.setHurt(100);
		System.out.println("战士:" + s.getName() + " 伤害值:" + s.attack());
		Team t = new Team();
		t.addMember(m);
		t.addMember(s);
		System.out.println("小队总伤害:" + t.attackSum());
	}
}
运行结果:
魔法师:老爹 伤害值:40
战士:成龙 伤害值:100
小队总伤害:140

---------------------------------------------------------------------------------
10.在第八题基础上进行修改

千锋20200228

//1.创建Role接口
interface Role {
	public int attack();

	public void practise();
}

//2.创建NamedRole类
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;
	}
}

//3.创建MagicStick接口
interface MagicStick{
	public int fire();
}

//4.为MagicStick增加两个实现类
class GreenStick implements MagicStick{
	public int fire() {
		Date month = new Date();
		if(month.getMonth()>=6&&month.getMonth()<=8) {
			return 2;
		}
		else {
			return 1;
		}
	}
}
class BlackStrick implements MagicStick{
	public int fire() {
		Date month = new Date();
		if(month.getMonth()%2==0) {
			return 2;
		}
		else {
			return 1;
		}
	}
}

//5.修改Magicer类
class Magicer extends NamedRole {
	private int level;// 魔法等级(范围:1-10)
	MagicStick strick;
	public int attack() {// 返回法师对敌人攻击的伤害值
		return level * 5;
	}
	

	public Magicer(String name,int age, int level) {
		super(name,age);
		this.level = level;
	}


	public MagicStick getStrick() {
		return strick;
	}


	public void setStrick(MagicStick strick) {
		this.strick = strick;
	}


	public int getLevel() {
		return level;
	}

	public void setLevel(int level) {
		if (level > 0 && level < 11) {
			this.level = level;
		} else {
			System.out.println("模仿等级已到上限");
		}
	}
	public void practise() {
		level++;
		if(strick!=null) {
			level=level+1+strick.fire();
		}
	}
}

//6.增加Weapon接口
interface Weapon{
	void setSoldier(Soldier s);
	int fire();
}

//7.为Weapon增加两个实现类
public 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;
		}
	}
}
public class Pike implements Weapon{//矛
	private Soldier s;
	private String name;
	public Pike() {}
	public Pike(String name) {
		this.name = name;
	}
	public void setSoldier(Soldier s) {
		this.s = s;
	}
	public int fire() {
		if(s.getName().equals(name)) {
			return 1000;
		}else {
			return 25;
		}
	}
}

//8.修改Soldier类  
class Soldier extends NamedRole {
	private int hurt;
	private Weapon weapon;// 战士武器

	public Soldier(String name, int age, int hurt) {
		super(name, age);
		this.hurt = hurt;
	}

	public int getHurt() {
		return hurt;
	}

	public void setHurt(int hurt) {
		this.hurt = hurt;
	}

	public Weapon getWeapon() {
		return weapon;
	}

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

	public Soldier() {
	}

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

	public void practise() {
		hurt += 10;
	}
}

//9.测试
public class TestGame {
	public static void main(String[] args) {
		MagicStick ms1 = new GreenStick();
		MagicStick ms2 = new BlackStrick();
		Magicer m1 = new Magicer("老爹", 50, 10);
		Magicer m2 = new Magicer("特鲁", 26, 5);
		m1.setStrick(ms1);
		m2.setStrick(ms2);

		System.out.println(m1.getName() + "伤害值:" + m1.attack());
		System.out.println(m2.getName() + "伤害值:" + m2.attack());

		m1.practise();
		m2.practise();
		System.out.println("-----经过训练后-----");
		System.out.println(m1.getName() + "伤害值:" + m1.attack());
		System.out.println(m2.getName() + "伤害值:" + m2.attack());

		System.out.println("------------------");

		Weapon w1 = new Bolo();
		Weapon w2 = new Pike("成龙");
		Soldier s1 = new Soldier("小玉", 15, 200);
		Soldier s2 = new Soldier("成龙", 28, 150);

		s1.setWeapon(w1);
		w1.setSoldier(s1);

		s2.setWeapon(w2);
		w2.setSoldier(s2);

		System.out.println(s1.getName() + "伤害值:" + s1.attack());
		System.out.println(s2.getName() + "伤害值:" + s2.attack());

		s1.practise();
		s2.practise();
		System.out.println("-----经过训练后-----");
		System.out.println(s1.getName() + "伤害值:" + s1.attack());
		System.out.println(s2.getName() + "伤害值:" + s2.attack());
	}
}
运行结果:
老爹伤害值:50
特鲁伤害值:25
-----经过训练后-----
老爹伤害值:65
特鲁伤害值:40
------------------
小玉伤害值:250
成龙伤害值:1150
-----经过训练后-----
小玉伤害值:260
成龙伤害值:1160
相关标签: 作业