問題描述
編寫一個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;
}
}