(1)定義以下這些接口和類,並完成相關屬性和方法的聲明和調用.數據類型,參數列表,返回值類型等請根據題目需要自行定義.
學習接口Learning(包含方法: 預習preLearn,上課lessons,複習reveiw)
喝酒接口Drinking(包含方法: 喝酒drink, 吐throwup,耍酒瘋playMad)
抽象類Person(包含屬性:姓名,性別,年齡; 抽象方法:談戀愛love)
學生Student是人,得會學習,但不能喝酒(因爲會使大腦變笨);他們還有自己的學校(school),還喜歡和朋友聊微信(chatting).
公務員Officer是人,不用學習,但經常需要喝酒應酬;他們還得經常開一些無聊的會議(meeting).
程序猿Programmer,是人,必須經常學習,較少社交所以不喝酒;他們特別喜歡寫代碼(coding),和修bug(debuging).
(2)在場景類Client中定義一個方法method1,在形參和實參上體現對象的多態性,在方法中進行調用,如果對象的實際類型是學生,
就和朋友聊微信;如果是公務員,就去開會;如果是程序猿,就去寫代碼和修bug.
(3)直接打印一個學生對象,就能以下面格式來輸出:
學生信息: 姓名:張三,性別:男,年齡:20,學校:北大.
(4)如果兩個學生的姓名、性別、年齡、學校一樣,則認爲這兩個學生“相等”。
該程序主要聯繫面向對象所學的抽象類、接口以及多態的使用!
代碼如下:
package week4homeworks;
/**
*
* @author LYB
*人類抽象類
*/
public abstract class Person {
private String name;
private String sex;
private int age;
public Person() {
}
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;
}
public abstract void love();
}
package week4homeworks;
/**
*
* @author LYB
*學生類
*/
public class Student extends Person implements Learing {
private String school;
public Student(String name, String sex, int age, String school) {
super(name, sex, age);
this.school = school;
}
public String getSchool() {
return school;
}
public void setSchool(String school) {
this.school = school;
}
public void Learing() {
}
public void chatting() {
System.out.println("使用微信聊天...");
}
@Override
public void preLearn() {
System.out.println("正在預習...");
}
@Override
public void lessions() {
System.out.println("正在上課...");
}
@Override
public void review() {
System.out.println("正在複習...");
}
@Override
public void love() {
System.out.println("正在談戀愛!");
}
public boolean equals(Object obj) {
if (this == obj) {
System.out.println("自己跟自己比,當然相等!");
return true;
}
if (obj == null) {
System.out.println("參數爲null,不相等");
return false;
}
if (!(obj instanceof Student)) { // 傳遞的參數是否屬於Student類
System.out.println("傳遞的不是Student對象");
return false;
}
Student stu = (Student) obj; // 向下轉型
if (this.getSchool() != null && this.getName() != null
&& this.getName().equals(stu.getName())
&& this.school.equals(stu.school)
&& this.getAge() == stu.getAge()) {
return true;
}
return false;
}
}
package week4homeworks;
/**
*
* @author LYB
*公務員類
*/
public class Officer extends Person implements Working, Drinking {
private String company;
public void meeting() {
System.out.println("開無聊的會議...");
}
public String getCompany() {
return company;
}
public void setCompany(String company) {
this.company = company;
}
public Officer() {
super();
this.company = company;
}
@Override
public void drink() {
System.out.println("應酬喝酒...");
}
@Override
public void throwup() {
System.out.println("喝酒太多導致嘔吐...");
}
@Override
public void playMad() {
System.out.println("喝醉了耍酒瘋...");
}
@Override
public void work() {
System.out.println("正在處理公務...");
}
@Override
public void makemoney() {
System.out.println("正在努力賺錢...");
}
@Override
public void love() {
System.out.println("正在與女友約會談戀愛...");
}
}
package week4homeworks;
/**
*
* @author LYB
*程序員類
*/
public class Programmer extends Person implements Learing, Working {
private String company1;
public String getCompany1() {
return company1;
}
public void setCompany1(String company1) {
this.company1 = company1;
}
public void coding() {
System.out.println("正在敲代碼...");
}
public void bug() {
System.out.println("正在debuging...");
}
@Override
public void preLearn() {
System.out.println("正在預習新的計算機編程知識...");
}
@Override
public void lessions() {
System.out.println("正在上課學習新的計算機編程知識...");
}
@Override
public void review() {
System.out.println("正在複習自己所學的計算機編程知識...");
}
@Override
public void love() {
System.out.println("正在與女友談戀愛...");
}
@Override
public void work() {
System.out.println("正在努力編程...");
}
@Override
public void makemoney() {
System.out.println("正在努力賺錢...");
}
public Programmer() {
super();
this.company1 = company1;
}
}
package week4homeworks;
/**
*
* @author LYB
*工作接口
*/
public interface Working {
public void work();
public void makemoney();
}
package week4homeworks;
/**
*
* @author LYB
*學習接口
*/
public interface Learing {
public void preLearn();
public void lessions();
public void review();
}
package week4homeworks;
/**
*
* @author LYB
*喝酒接口
*/
public interface Drinking {
public void drink();
public void throwup();
public void playMad();
}
package week4homeworks;
/**
*
* @author LYB
*各個類型的人的場景主類
*/
public class Client {
public static void main(String[] args) {
Student stu = new Student("張三", "男", 16, "西安高級中學");
// stu.setSchool("西安高級中學");
Officer off = new Officer();
Programmer pro = new Programmer();
clientMethod(null);
clientMethod(stu);
clientMethod(off);
clientMethod(pro);
}
private static void clientMethod(Person per) {
if (per == null) {
System.out.println("不能直接傳遞null!");
return;
} else if (per instanceof Student) {
Student stu = (Student) per;
// stu.setName("張三");
// stu.setAge(16);
// stu.setSex("男");
// stu.setSchool("西安高級中學");
System.out.println(stu.getName() + "," + stu.getSex() + ",年齡"
+ stu.getAge() + ",就讀於" + stu.getSchool());
System.out.print(stu.getName());
stu.chatting();
System.out.print(stu.getName());
stu.preLearn();
System.out.print(stu.getName());
stu.lessions();
System.out.print(stu.getName());
stu.review();
System.out.print(stu.getName());
stu.love();
} else if (per instanceof Officer) {
Officer off = (Officer) per;
off.setName("李強");
off.setAge(25);
off.setSex("男");
off.setCompany("西安市政府");
System.out.println(off.getName() + "," + off.getSex() + "今年"
+ off.getAge() + "是" + off.getCompany() + "的一名公務員!");
System.out.print(off.getName());
off.work();
System.out.print(off.getName());
off.meeting();
System.out.print(off.getName());
off.makemoney();
System.out.print(off.getName());
off.drink();
System.out.print(off.getName());
off.playMad();
System.out.print(off.getName());
off.throwup();
System.out.print(off.getName());
off.love();
} else if (per instanceof Programmer) {
Programmer pro = (Programmer) per;
pro.setName("李四");
pro.setAge(30);
pro.setSex("男");
pro.setCompany1("騰訊科技");
System.out.println(pro.getName() + "," + pro.getSex() + ",今年"
+ pro.getAge() + "歲了," + "在" + pro.getCompany1() + "上班!");
System.out.print(pro.getName());
pro.work();
System.out.print(pro.getName());
pro.coding();
System.out.print(pro.getName());
pro.bug();
System.out.print(pro.getName());
pro.makemoney();
System.out.print(pro.getName());
pro.preLearn();
System.out.print(pro.getName());
pro.lessions();
System.out.print(pro.getName());
pro.review();
System.out.print(pro.getName());
pro.love();
}
}
}
package week4homeworks;
/**
*
* @author LYB
*比較兩個學生是否爲同一個人,主類
*/
public class CompareStudent {
public static void main(String[] args) {
Student stu1 = new Student("張三", "男", 20, "西安中學");
Student stu2 = new Student("張三", "男", 20, "西安中學");
// stu1.setSchool("西安中學");
// stu2.setSchool("西安中學");
boolean flag = stu1.equals(stu2);
System.out.println(flag);
}
}
package week4homeworks;
/**
*
* @author LYB
*打印一個學生具體信息,主類
*/
public class PrintStudent {
public static void main(String[] args) {
Student stu = new Student("小雨", "女", 18, "西工大附中");
// stu.setName("小雨");
// stu.setAge(18);
// stu.setSex("女");
// stu.setSchool("西工大附中");
System.out.print(stu.getName() + "," + stu.getSex() + "今年"
+ stu.getAge() + "歲了," + "就讀於" + stu.getSchool());
}
}