1.学习接口
package 第四天作业;
/*
* 学习接口Learning(包含方法: 预习prepare,上课lessons,复习reveiw)
*/
public interface Learning {
//预习方法
public void prepare();
//上课方法
public void lessons();
//复习方法
public void review();
}
2.喝酒接口
package 第四天作业;
//喝酒接口Drinking(包含方法: 喝酒drink, 吐throwup,耍酒疯playMad)
public interface Drinking {
//喝酒方法
public void drink();
//吐
public void throwUp();
//耍酒疯
public void playMad();
}
3.人的抽象类
package 第四天作业;
//抽象类Person(包含属性:姓名,性别,年龄; 抽象方法:谈恋爱love)
public abstract class Person {
private String name;
private String sex;
private int age;
public Person(){
}
public Person(String name,String sex,int age){
this.name = name;
this.sex = sex;
this.age = age;
}
//定义一个谈恋爱的抽象方法
public abstract void love();
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;
}
}
4.学生类
package 第四天作业;
//学生Student是人,得会学习,
//但不能喝酒(因为会使大脑变笨);他们还有自己的学校(school),还喜欢和朋友聊微信(chatting).
//)直接打印一个学生对象,就能以下面格式来输出:
//学生信息: 姓名:张三,性别:男,年龄:20,学校:北大.
public class Student extends Person implements Learning{
private String schoolName;
public String getSchoolName() {
return schoolName;
}
public void setSchoolName(String schoolName) {
this.schoolName = schoolName;
}
public Student(){
}
public Student(String name,String sex,int age,String schoolName){
super(name,sex,age);
this.schoolName = schoolName;
}
public void love() {
System.out.println("学生都恋爱吗?不存在的");
}
//实现一下预习方法
public void prepare() {
System.out.println("期末了开始预习");
}
//上课方法
public void lessons() {
System.out.println("上课也不听");
}
//复习方法
public void review() {
System.out.println("复习?没有复习的,考研得复习,好好学习才有的复习");
}
//扩展方法,聊微信
public void chatting(){
System.out.println(this.getName()+"喜欢聊微信");
}
//重写toString()方法
public String toString(){
return "学生信息: 姓名:"+super.getName()+" 性别:"+super.getSex()+" 年龄:"+super.getAge()+""
+ " 学校:"+this.schoolName;
}
//重写equals()方法
public boolean equals(Object obj){
Student stu = (Student)obj;
if(this.getName() == stu.getName() && this.getSex() == stu.getSex()
&& this.getAge() == stu.getAge() && this.schoolName == stu.schoolName){
return true;
}
return false;
}
}
5.公务员类
package 第四天作业;
//公务员Officer是人,不用学习,
//但经常需要喝酒应酬;他们还得经常开一些无聊的会议(meeting).
public class Officer extends Person implements Drinking{
private String goverment;
public Officer(){
}
public Officer(String name,String sex,int age,String goverment){
super(name,sex,age);
this.goverment = goverment;
}
//重写父类中的方法
public void love() {
System.out.println("公务员,铁饭碗,大概很多人喜欢");
}
//扩展方法:开会
public void meeting(){
System.out.println(this.getName()+"老是开会");
}
public void drink() {
System.out.println("公务员应酬多");
}
public void throwUp() {
System.out.println("喝多了容易吐");
}
public void playMad() {
System.out.println("一醉解千愁,解不了现实的任何东西。面对现实才好,耍酒疯没什么意思");
}
}
5.程序员类
package 第四天作业;
//程序猿Programmer,是人,必须经常学习,
//较少社交所以不喝酒;他们特别喜欢写代码(coding),和修bug(debuging).
public class Programmer extends Person implements Learning{
private String company;
public Programmer() {
}
public Programmer(String name,String sex,int age,String company){
super(name,sex,age);
this.company = company;
}
//程序员喜欢写代码
public void coding(){
System.out.println(super.getName()+"喜欢写代码");
}
//程序员改bug
public void debuging(){
System.out.println(super.getName()+"喜欢改代码");
}
@Override
public void prepare() {
System.out.println("看博客,看视频,多多预习啊,真的快没有时间了");
}
@Override
public void lessons() {
System.out.println("上课得好好听,学费好贵啊。。。");
}
@Override
public void review() {
System.out.println("不断的复习却得到新的东西");
}
@Override
public void love() {
System.out.println("龟龟,程序员谈恋爱?");
}
}
6.测试Client类
package 第四天作业;
//在场景类Test中定义一个方法method1,在形参和实参上体现对象的多态性,在方法中进行调用,如果对象的实际类型是学生,
//就和朋友聊微信;如果是公务员,就去开会;如果是程序猿,就去写代码和修bug.
public class Test {
public static void method(Person per){
if(per instanceof Student){
Student stu = (Student)per;
stu.chatting();
}else if(per instanceof Officer){
Officer off = (Officer)per;
off.meeting();
}else if(per instanceof Programmer){
Programmer pro = (Programmer)per;
pro.coding();
pro.debuging();
}
}
public static void main(String[] args) {
Student stu1 = new Student("菲奥娜","女",18,"西洋剑术学院");
Officer off = new Officer("李建国","男",62,"食品局");
Programmer pro = new Programmer("王哈哈","男",28,"腾讯");
System.out.println("--学生--");
method(stu1);
System.out.println("--公务员--");
method(off);
System.out.println("--程序员--");
method(pro);
//直接打印学生引用,打印出学生信息
System.out.println(stu1);
//比较俩对象是否为同一学生
System.out.println("--输出学生对象");
Student stu2 = new Student("菲奥娜","女",18,"西洋剑术学院");
System.out.println("--比较学生对象");
System.out.println(stu1.equals(stu2));
}
}
测试结果: