1.面向对象练习
案例题目描述
- 做一个Student类,Student类有名称(name) 性别(sex),年龄(age),学号(stu id),做合理封装,通过构造器在创建对象时将4个属性赋值。
- 写一个Teacher类,Teacher类有名称(name),性别(sex),年龄(age),工龄(work age),做合理封装,通过构造器在创建对象时将4个属性赋值。
- 抽取一个父类Person类,将共同属性和方法放到Person类
- 学生需要有学习的方法(study),在方法里写生:“我承诺,我会好好学习。"
- 教师需要有教学的方法(teach),在方法里写上“我承诺,我会认真教学。
- 学生和教师都有玩的方法(play),学生玩的是足球,老师玩的是象棋:'xx爱玩足球”和“xx爱玩象棋”(其此方法是返回字符串的,分别返回中xx分别代表学生和老师的姓名)。因为玩的方法名称都一样,所以要求此方法定义在父类中,子类实现重写。
- 定义多态数组,里面保存2个学生和2个教师,要求按年龄从高到低排序
- 定义方法,形参为Person类型,功能:调用学生的study或教师的teach方法
package com.logic.homework.homework13;
//案例题目描述:
// (1)做一个Student类,Student类有名称(name) 性别(sex),年龄(age),学号(stu id),做合理封装,
//通过构造器在创建对象时将4个属性赋值。
// (2)写一个Teacher类,Teacher类有名称(name),性别(sex),年龄(age),工龄(work age),做合理封装,
// 通过构造器在创建对象时将4个属性赋值。
// (3)抽取一个父类Person类,将共同属性和方法放到Person类
// (4)学生需要有学习的方法(study),在方法里写生:“我承诺,我会好好学习。"
// (5)教师需要有教学的方法(teach),在方法里写上“我承诺,我会认真教学。
// (6)学生和教师都有玩的方法(play),学生玩的是足球,老师玩的是象棋
// :'xx爱玩足球”和“xx爱玩象棋”(其此方法是返回字符串的,
// 分别返回中xx分别代表学生和老师的姓名)。
// 因为玩的方法名称都一样,所以要求此方法定义在父类中,子类实现重写。
// (7)定义多态数组,里面保存2个学生和2个教师,要求按年龄从高到低排序
// (8)定义方法,形参为Person类型,功能:调用学生的study或教师的teach方法
public class Homework13 {
public static void main(String[] args) {
Student student1 = new Student("logic", '男', 20, 123);
Student student2 = new Student("jack", '男', 21, 456);
Teacher teacher1 = new Teacher("Amy", '女', 30, 6);
Teacher teacher2 = new Teacher("Alice", '女', 33, 9);
student1.printInfo();
teacher1.printInfo();
Person[] people = {student1, student2, teacher1, teacher2};
Homework13 homework13 = new Homework13();
homework13.bubbleSort(people);
//排序后的数组
System.out.println("===排序后的数组===");
for (int i = 0; i < people.length; i++) {
System.out.println(people[i]);
}
//遍历数组调用test方法
System.out.println("==========");
for (int i = 0; i < people.length; i++) {
homework13.test(people[i]);
}
}
//定义方法,形参为Person类型,功能:调用学生的study或教师的teach方法
//用到向下转型和类型判断
public void test(Person p) {
if (p instanceof Student) {//p的运行类型如果是Student
((Student) p).study();
} else if (p instanceof Teacher) {
((Teacher) p).teach();
} else {
System.out.println("do nothing");
}
}
public void bubbleSort(Person[] persons) {
Person temp = null;
for (int i = 0; i < persons.length - 1; i++) {
for (int j = 0; j < persons.length - 1 - i; j++) {
//注意这里的条件可以根据需要变化
if (persons[j].getAge() < persons[j + 1].getAge()) {
temp = persons[j];
persons[j] = persons[j + 1];
persons[j + 1] = temp;
}
}
}
}
}
package com.logic.homework.homework13;
public class Teacher extends Person {
private double work_age;
public Teacher(String name, char sex, int age, double work_age) {
super(name, sex, age);
this.work_age = work_age;
}
public double getWork_age() {
return work_age;
}
public void setWork_age(double work_age) {
this.work_age = work_age;
}
public void teach() {
System.out.println(getName() + "承诺,我会认真教学。");
}
@Override
public String play() {
return super.play() + "象棋";
}
public void printInfo() {
System.out.println("老师的信息:");
System.out.println(super.basicInfo());
System.out.println("工龄:" + work_age);
teach();//组合
System.out.println(play());
}
@Override
public String toString() {
return "Teacher{" +
"work_age=" + work_age +
'}' + super.toString();
}
}
package com.logic.homework.homework13;
public class Student extends Person {
private int stu_id;
public Student(String name, char sex, int age, int stu_id) {
super(name, sex, age);
this.stu_id = stu_id;
}
public int getStu_id() {
return stu_id;
}
public void setStu_id(int stu_id) {
this.stu_id = stu_id;
}
public void study() {
System.out.println(getName() + "承诺,我会好好学习。");
}
@Override
public String play() {
return super.play() + "足球";
}
public void printInfo() {
System.out.println("学生的信息:");
System.out.println(super.basicInfo());
System.out.println("学号:" + stu_id);
study();//组合
System.out.println(play());
}
@Override
public String toString() {
return "Student{" +
"stu_id=" + stu_id +
'}' + super.toString();
}
}
package com.logic.homework.homework13;
public class Person {
private String name;
private char sex;
private int age;
public Person(String name, char sex, int age) {
this.name = name;
this.sex = sex;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public char getSex() {
return sex;
}
public void setSex(char sex) {
this.sex = sex;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String play() {
return name + "爱玩";
}
public void use(Person person) {
person.play();
}
public String basicInfo() {
return "姓名:" + name + "\n年龄:" + age + "\n性别:" + sex;
}
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", sex=" + sex +
", age=" + age +
'}';
}
}