编写一个person抽象类,要求含有姓名(name)年龄(age)两个私有属性以及吃饭(eat) 和睡觉(sleep)两个抽象方法,并写出带参构造方法,创建学生(student)和工人(worker)
时间: 2023-05-31 11:17:47 浏览: 730
### 回答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,以及两个抽象方法eat和sleep。这两个方法没有具体的实现,因为它们的具体实现应该由子类来完成。
Student和Worker类都是Person类的子类,它们分别代表学生和工人。它们都实现了eat和sleep方法,但是具体的实现不同,因为学生和工人的生活方式不同。
在创建Student和Worker对象时,需要调用它们的构造方法,并传入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类,并在自己的类中实现了eat和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类,并重写了eat和sleep方法,根据自己的行业特点实现了不同的行为。
最后,我们可以在程序中创建学生和工人的对象,并调用它们的eat和sleep方法。
```
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();
}
}
```
运行的结果如下:
```
学生们在食堂吃饭
学生们在宿舍睡觉
工人们在工厂吃饭
工人们在工厂宿舍睡觉
```
这个例子说明了面向对象编程的灵活性和可扩展性。我们使用一个抽象类来描述不同的人的共性,然后通过继承来实现不同的行为。这种设计方式可以方便地扩展和修改程序,使得程序结构更加紧凑,代码更加简洁。
阅读全文