面向对象练习题(1)

面向对象练习题(1)
1.打印效果如下:
老师的信息:
姓名:王飞
年龄:30
性别:男
工龄:5
我承诺,我会认真教课。
王飞爱玩象棋
学生的信息:
姓名:小明
年龄:15
性别:男
学号:00023102
我承诺,我会 好好学习。
小明爱玩足球。
王飞爱玩象棋
小明爱玩足球。
2.案例题目描述及评分标准:
①做一个Student类,Student类有名称(name),性别(sex),年龄(age),学号(stu_id),做合理封装,通过构造器在创建对象时将4个属性赋值。
②写一个Teacher类,Teacher类有名称(name),性别(sex),年龄(age),工龄(work_age),做合理封装,通过构造器在创建对象时将4个属性赋值。
③因为Student类和Teacher类有公共内容,所以尝试编写父类(Person),将公共内容抽象成父类。
④学生需要有学习的方法(study),在方法里写成“我承诺,我会好好学习。”。
⑤教师需要有教学的方法(teach),在方法里写上“我承诺,我会认真教学。”。
⑥学生和教师都有玩的方法(play),学生玩的是足球,老师玩的是象棋,此方法是Stirng,分别返回“xx爱玩足球”和“xx爱玩象棋”(其中xx分别代表学生和老师的姓名)。因为玩的方法名称都一样,所以要求此方法定义在父类中,子类实现重写。
⑦定义一个学校类对老师和学生进行管理,在学校类中定义manager(Person person)方法,实现对不同的对象进行判断,如果是输入类型为Teacher类型,调用Teacher类中play方法进行输出,如果输入类型为Student类型,调用Student类中play方法进行输出。
⑧要求测试类结果和效果案例一样。
3.评分规则
①Student类及study方法定义正确。(5分)
②Teacher类及teach方法定义正确(5分)
③Person父类定义正确,需要老师类和学生类继承,并按要求完成功能。(5分)
④play方法定义正确(5分)
⑤学校类定义正确,能实现对传入类型的正确判断。(10分)
⑥测试类定义正确(5分)
⑦运行结果正确(5分)

//因为Student类和Teacher类有公共内容,所以尝试编写父类(Person),将公共内容抽象成父类。
public class Person {
     
	String name;
	String sex;
	int age;
	public Person() {
     
		super();		
	}
	public Person(String name, String sex, int age) {
     
		super();
		this.name = name;
		this.sex = sex;
		this.age = age;
	}
	public String getName() {
     
		return name;
	}
	public void setName(String name) {
     
		this.name = name;
	}
	public String getSex() {
     
		return sex;
	}
	public void setSex(String sex) {
     
		this.sex = sex;
	}
	public int getAge() {
     
		return age;
	}
	public void setAge(int age) {
     
		this.age = age;
	}
	@Override
	public String toString() {
     
		return "姓名:" + name + "性别" + sex + "年龄" + age ;
	}
	//学生和教师都有玩的方法(play),学生玩的是足球,老师玩的是象棋,此方法是Stirng,分别返回“xx爱玩足球”和“xx爱玩象棋”(其中xx分别代表学生和老师的姓名)。因为玩的方法名称都一样,所以要求此方法定义在父类中,子类实现重写。
	public String play() {
     
		return"爱玩游戏";
		}
}
//写一个Teacher类,Teacher类有名称(name),性别(sex),年龄(age),工龄(work_age),做合理封装,通过构造器在创建对象时将4个属性赋值
public class Teacher extends Person{
     
	int work_age;//工龄
	public Teacher() {
     
	}
	public Teacher(String name, String sex, int age, int work_age) {
     
		super(name, sex, age);
		this.work_age = work_age;
	}
	public int getWork_age() {
     
		return work_age;
	}
	public void setWork_age(int work_age) {
     
		this.work_age = work_age;
	}
	//教师需要有教学的方法(teach),在方法里写上“我承诺,我会认真教学。”
	public void teach() {
     
		System.out.println("我承诺,我会认真教学");
	}
	@Override
		public String play() {
     			
			return "爱玩象棋";
		}
		@Override
	public String toString() {
     
		return "Teacher [work_age=" + work_age + "]";
	}
//做一个Student类,Student类有名称(name),性别(sex),年龄(age),学号(stu_id),做合理封装,通过构造器在创建对象时将4个属性赋值。
public class Student extends Person {
     
	String stu_id;
	public Student(String name, String sex, int age, String stu_id) {
     
		super(name, sex, age);
		this.stu_id = stu_id;
	}
	public Student() {
     
	}
	//学生需要有学习的方法(study),在方法里写成“我承诺,我会好好学习。”。
	public void study() {
     
		System.out.println("我承诺,我会好好学习");
	}
	@Override
	public String play() {
     
		return "爱玩足球";
	}
	@Override
	public String toString() {
     
		return super.toString() + "学号" + stu_id;
	}
}
//定义一个学校类对老师和学生进行管理,在学校类中定义manager(Person  person)方法,实现对不同的对象进行判断,如果是输入类型为Teacher类型,调用Teacher类中play方法进行输出,如果输入类型为Student类型,调用Student类中play方法进行输出。
public class School {
     
	public static void manager(Person p) {
     
		if(p instanceof Student) {
     
			Student stu = (Student) p;
			String string = stu.play();
			System.out.println(string);
		}else if (p instanceof Teacher) {
     
			Teacher t = (Teacher) p;
			String str = t.play();
			System.out.println(str);
		}		
	}
	public static void main(String[] args) {
     
		manager(new Teacher());
		manager(new Student());
	}
}
//要求测试类结果和效果案例一样。
public class Test {
     
	public static void main(String[] args) {
     
		Teacher teacher = new Teacher();
		teacher.name="王飞";
		teacher.sex="男";
		teacher.age=30;
		teacher.work_age=5;
		System.out.println("老师的信息:"+teacher);
		teacher.teach();
		School.manager(teacher);
		System.out.println("---------------------------");
		Student student = new Student();
		student.name="小明";
		student.sex="男";
		student.age=15;
		student.stu_id="00023102";
		System.out.println("学生的信息:"+student);
		student.study();
		School.manager(student);		
}
}
}

面向对象练习题(1)_第1张图片

你可能感兴趣的:(封装,面向对象编程)