(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());
}
}