编写一个Person抽象类,要求含有姓名(name)年龄(age)两个私有属性以及吃饭(eat) 和睡觉(sleep)两个抽象方法,并写出带参构造方法,创建学生(student)和工人(work

public abstract class Person {
    private String name;
    private  int age;
    public abstract void eat();
    public abstract void sleep();

    public Person(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;
    }
}
public class student extends Person {
    public student(String name, int age) {
        super(name, age);
    }
    private int num;

    public int getNum() {
        return num;
    }

    public void setNum(int num) {
        this.num = num;
    }

    @Override
    public void eat() {
        System.out.println("学生爱吃kfc");
    }

    @Override
    public void sleep() {
        System.out.println("学生在教室睡觉");
    }
    public void studymethod(){
        System.out.println("我爱学习");
    }
}
public class worker extends Person {
    public worker(String name, int age) {
        super(name, age);
    }
    private int num2;

    public int getNum2() {
        return num2;
    }

    public void setNum2(int num2) {
        this.num2 = num2;
    }

    @Override
    public void eat() {
        System.out.println("工人爱吃面条");
    }

    @Override
    public void sleep() {
        System.out.println("学生在工厂睡觉");
    }
    public void studymethod(){
        System.out.println("我爱工作");
    }
}
public class Test {
    public static void main(String[] args) {
        student s = new student("王雨欣", 19);
        System.out.println(s.getName());
        System.out.println("年龄"+s.getAge());
        s.setNum(12);
        System.out.println("学号为"+s.getNum());
        s.eat();
        s.sleep();
        s.studymethod();
        worker w = new worker("王大力", 35);
        w.setNum2(65);
        System.out.println("工号为"+w.getNum2());
        System.out.println("年龄为"+w.getAge());
        System.out.println(w.getName());
        w.eat();
        w.sleep();
        w.studymethod();
    }
}

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 下面是一个符合要求Person抽象类的示例代码: ```java public abstract class Person { private String name; private int age; public Person(String name, int age) { this.name = name; this.age = age; } public abstract void eat(); public abstract void sleep(); } public class Student extends Person { public Student(String name, int age) { super(name, age); } @Override public void eat() { System.out.println("学生在食堂"); } @Override public void sleep() { System.out.println("学生在宿舍睡觉"); } } public class Worker extends Person { public Worker(String name, int age) { super(name, age); } @Override public void eat() { System.out.println("工人在工地"); } @Override public void sleep() { System.out.println("工人在宿舍睡觉"); } } ``` 在这个示例代码中,Person类是一个抽象类,它包含了两个私有属性name和age,以及两个抽象方法eatsleep。这两个方法没有具体的实现,因为它们的具体实现应该由子类来完成。 StudentWorker类都是Person类的子类,它们分别代表学生工人。它们都实现了eatsleep方法,但是具体的实现不同,因为学生工人的生活方式不同。 在创建StudentWorker对象时,需要调用它们的构造方法,并传入name和age数。这些数会被传递给Person类的构造方法,从而初始化name和age属性。 ### 回答2: Person是一个抽象类,该类用于描述一个人的基本属性和行为,包括姓名年龄睡觉方法。 首先,我们需要定义一个抽象Person,其中包含姓名(name)和年龄age)两个私有属性。然后,我们需要添加抽象方法eat()和sleep(),这些方法分别用于描述一个人睡觉的行为。抽象类中的抽象方法没有具体的实现,而是由其子类来具体实现。 定义抽象Person的代码如下: ``` public abstract class Person { private String name; private int age; public Person(String name, int age) { this.name = name; this.age = age; } public abstract void eat(); public abstract void sleep(); } ``` 接下来,我们需要创建两个子类,即学生Student)和工人Worker),这些子类继承自Person类,并实现它的抽象方法。关于学生工人的行为,我们需要分别重Person类中的eat()和sleep()方法。 定义学生Student的代码如下: ``` public class Student extends Person { public Student(String name, int age) { super(name, age); } @Override public void eat() { System.out.println("学生正在。"); } @Override public void sleep() { System.out.println("学生正在睡觉。"); } } ``` 定义工人Worker的代码如下: ``` public class Worker extends Person { public Worker(String name, int age) { super(name, age); } @Override public void eat() { System.out.println("工人正在。"); } @Override public void sleep() { System.out.println("工人正在睡觉。"); } } ``` 在上述代码中,我们重Person类中的eat()和sleep()方法,并在输打印语句中说明了学生工人此时的行为。 最后,我们可以通过以下代码创建学生工人: ``` Student st = new Student("小明", 20); Worker wk = new Worker("小王", 30); st.eat(); st.sleep(); wk.eat(); wk.sleep(); ``` 执行上述代码后,将会输以下的内容: ``` 学生正在学生正在睡觉工人正在工人正在睡觉。 ``` 上述代码展示了学生工人睡觉的行为,这些行为是通过重Person类中的抽象方法所实现的。通过创建抽象Person和其子类,我们可以清晰地描述一个人的行为和属性,从而更好地组织和管理代码。 ### 回答3: Person抽象类是一种模板,用于描述人的基本属性和行为。在这个抽象类中,我们需要定义两个私有属性姓名(name)和年龄age)。这两个属性都是私有的,因为我们不希望外部程序直接访问它们,而是通过公共接口来访问。此外,我们需要定义两个抽象方法eat)和睡觉sleep)。这两个方法由子类实现,根据子类不同的需求,实现不同的行为。 ``` public abstract class Person { private String name; private int age; public Person(String name, int age) { this.name = name; this.age = age; } public abstract void eat(); public abstract void sleep(); } ``` 我们还需要定义构造方法来初始化私有属性。这个构造方法可以让我们在创建每个子类对象时,设置姓名年龄属性的初始值。 接下来,我们创建两个子类,一个是学生Student),一个是工人Worker)。学生工人都是人,因此它们都继承自Person类,并在自己的类中实现了eatsleep方法。 ``` public class Student extends Person { public Student(String name, int age) { super(name, age); } @Override public void eat() { System.out.println("学生们在食堂"); } @Override public void sleep() { System.out.println("学生们在宿舍睡觉"); } } public class Worker extends Person { public Worker(String name, int age) { super(name, age); } @Override public void eat() { System.out.println("工人们在工厂"); } @Override public void sleep() { System.out.println("工人们在工厂宿舍睡觉"); } } ``` 学生工人类继承了Person类,并重eatsleep方法,根据自己的行业特点实现了不同的行为。 最后,我们可以在程序中创建学生工人的对象,并调用它们的eatsleep方法。 ``` public class Main { public static void main(String[] args) { Person tom = new Student("Tom", 20); tom.eat(); tom.sleep(); Person jack = new Worker("Jack", 30); jack.eat(); jack.sleep(); } } ``` 运行的结果如下: ``` 学生们在食堂 学生们在宿舍睡觉 工人们在工厂 工人们在工厂宿舍睡觉 ``` 这个例子说明了面向对象编程的灵活性和可扩展性。我们使用一个抽象类来描述不同的人的共性,然后通过继承来实现不同的行为。这种设计方式可以方便地扩展和修改程序,使得程序结构更加紧凑,代码更加简洁。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值