1. 程式人生 > 其它 >面向物件練習題(1)

面向物件練習題(1)

技術標籤:封裝面向物件程式設計

面向物件練習題(1)
1.列印效果如下:
老師的資訊:
姓名:王飛
年齡:30
性別:男
工齡:5
我承諾,我會認真教課。
王飛愛玩象棋
學生的資訊:
姓名:小明
年齡:15
性別:男
學號:00023102
我承諾,我會 好好學習。
小明愛玩足球。
王飛愛玩象棋
小明愛玩足球。
2.案例題目描述及評分標準:
①做一個Student類,Student類有名稱(name),性別(sex),年齡(age),學號(stu_id),做合理封裝,通過構造器在建立物件時將4個屬性賦值。
②寫一個Teacher類,Teacher類有名稱(name),性別(sex),年齡(age),工齡(work_age),做合理封裝,通過構造器在建立物件時將4個屬性賦值。

③因為Student類和Teacher類有公共內容,所以嘗試編寫父類(Person),將公共內容抽象成父類。
④學生需要有學習的方法(study),在方法裡寫成“我承諾,我會好好學習。”。
⑤教師需要有教學的方法(teach),在方法裡寫上“我承諾,我會認真教學。”。
⑥學生和教師都有玩的方法(play),學生玩的是足球,老師玩的是象棋,此方法是Stirng,分別返回“xx愛玩足球”和“xx愛玩象棋”(其中xx分別代表學生和老師的姓名)。因為玩的方法名稱都一樣,所以要求此方法定義在父類中,子類實現重寫。
⑦定義一個學校類對老師和學生進行管理,在學校類中定義manager(Person person)方法,實現對不同的物件進行判斷,如果是輸入型別為Teacher型別,呼叫Teacher類中play方法進行輸出,如果輸入型別為Student型別,呼叫Student類中play方法進行輸出。
⑧要求測試類結果和效果案例一樣。
3.評分規則
①Student類及study方法定義正確。(5分)
②Teacher類及teach方法定義正確(5分)
③Person父類定義正確,需要老師類和學生類繼承,並按要求完成功能。(5分)
④play方法定義正確(5分)
⑤學校類定義正確,能實現對傳入型別的正確判斷。(10分)
⑥測試類定義正確(5分)
⑦執行結果正確(5分)

//因為Student類和Teacher類有公共內容,所以嘗試編寫父類(Person),將公共內容抽象成父類。
public class Person {
	String name;
	String sex;
	int age;
	public
Person() { super(); } public Person(String name, String sex, int age) { super(); this.name = name; this.sex = sex; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } @Override public String toString() { return "姓名:" + name + "性別" + sex + "年齡" + age ; } //學生和教師都有玩的方法(play),學生玩的是足球,老師玩的是象棋,此方法是Stirng,分別返回“xx愛玩足球”和“xx愛玩象棋”(其中xx分別代表學生和老師的姓名)。因為玩的方法名稱都一樣,所以要求此方法定義在父類中,子類實現重寫。 public String play() { return"愛玩遊戲"; } } //寫一個Teacher類,Teacher類有名稱(name),性別(sex),年齡(age),工齡(work_age),做合理封裝,通過構造器在建立物件時將4個屬性賦值 public class Teacher extends Person{ int work_age;//工齡 public Teacher() { } public Teacher(String name, String sex, int age, int work_age) { super(name, sex, age); this.work_age = work_age; } public int getWork_age() { return work_age; } public void setWork_age(int work_age) { this.work_age = work_age; } //教師需要有教學的方法(teach),在方法裡寫上“我承諾,我會認真教學。” public void teach() { System.out.println("我承諾,我會認真教學"); } @Override public String play() { return "愛玩象棋"; } @Override public String toString() { return "Teacher [work_age=" + work_age + "]"; } //做一個Student類,Student類有名稱(name),性別(sex),年齡(age),學號(stu_id),做合理封裝,通過構造器在建立物件時將4個屬性賦值。 public class Student extends Person { String stu_id; public Student(String name, String sex, int age, String stu_id) { super(name, sex, age); this.stu_id = stu_id; } public Student() { } //學生需要有學習的方法(study),在方法裡寫成“我承諾,我會好好學習。”。 public void study() { System.out.println("我承諾,我會好好學習"); } @Override public String play() { return "愛玩足球"; } @Override public String toString() { return super.toString() + "學號" + stu_id; } } //定義一個學校類對老師和學生進行管理,在學校類中定義manager(Person person)方法,實現對不同的物件進行判斷,如果是輸入型別為Teacher型別,呼叫Teacher類中play方法進行輸出,如果輸入型別為Student型別,呼叫Student類中play方法進行輸出。 public class School { public static void manager(Person p) { if(p instanceof Student) { Student stu = (Student) p; String string = stu.play(); System.out.println(string); }else if (p instanceof Teacher) { Teacher t = (Teacher) p; String str = t.play(); System.out.println(str); } } public static void main(String[] args) { manager(new Teacher()); manager(new Student()); } } //要求測試類結果和效果案例一樣。 public class Test { public static void main(String[] args) { Teacher teacher = new Teacher(); teacher.name="王飛"; teacher.sex="男"; teacher.age=30; teacher.work_age=5; System.out.println("老師的資訊:"+teacher); teacher.teach(); School.manager(teacher); System.out.println("---------------------------"); Student student = new Student(); student.name="小明"; student.sex="男"; student.age=15; student.stu_id="00023102"; System.out.println("學生的資訊:"+student); student.study(); School.manager(student); } } }

程式碼執行結果