抽象类练习_学生与工人

问题描述

编写一个Person抽象类,要求含有姓名(name)、年龄(age)两个私有属性以及吃饭(eat)和睡觉(sleep)两个抽象方法,并添加带参构造方法为name和age赋初值。

创建学生(Student)类并继承Person类,学生类多出了私有属性学号学习方法(输出我爱学习)。

创建工人(Worker)类并继承Person类,工人类多出了私有属性工号工作方法(输出我爱工作),

在主函数中创建学生和工人类的实例对象,使用构造方法赋值,并输出所有属性和方法。

备注:构造方法=构造器、属性=字段

输出结果如下: 

姓名:张三,年龄:20,学号:1024
食堂吃饭
我爱学习
在宿舍睡觉
姓名:李四,年龄:35,工号:1025
自己做饭
我爱工作
在家睡觉

参考代码

Person类

public abstract class Person {
    private String name; // String是基本类型吗?如果不是,那是什么类型
    private int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public abstract void eat(); // 抽象方法的访问权限只能是public吗?

    public abstract void sleep();

    @Override
    public String toString() {
        return "姓名:" + name + ", 年龄:" + age;
    }
}

学生类

public class Student extends Person {
    private int id;

    public Student(String name, int age, int id) {
        super(name, age);
        this.id = id;
    }

    @Override
    public void eat() {
        System.out.println("食堂吃饭");
    }

    @Override
    public void sleep() {
        System.out.println("在宿舍睡觉");
    }

    public void study() {
        System.out.println("我爱学习");
    }

    @Override
    public String toString() {
        return super.toString() + ", 学号:" + id;
    }
}

工人类

public class Worker extends Person {
    private int id;

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

    @Override
    public void eat() {
        System.out.println("自己做饭");
    }

    @Override
    public void sleep() {
        System.out.println("在家睡觉");
    }

    public void work() {
        System.out.println("我爱工作");
    }

    @Override
    public String toString() {
        return super.toString() + ", 工号:" + id;
    }
}

主函数

public class Main {

    public static void main(String[] args) {
        Student student = new Student("张三", 20, 12);
        System.out.println(student);
        student.eat();
        student.study();
        student.sleep();

        Worker worker = new Worker("李四", 27, 47);
        System.out.println(worker);
        worker.eat();
        worker.work();
        worker.sleep();
    }
}

输出结果:

姓名:张三, 年龄:20, 学号:12
食堂吃饭
我爱学习
在宿舍睡觉
姓名:李四, 年龄:27, 工号:47
自己做饭
我爱工作
在家睡觉

 

posted @ 2024-11-24 23:36  xkfx  阅读(86)  评论(0编辑  收藏  举报