Java基础 8.10

1.面向对象练习

案例题目描述

  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方法
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 +
                '}';
    }
}

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值