JAVA78作业

(1)定义以下这些接口和类,并完成相关属性和方法的声明和调用.数据类型,参数列表,返回值类型等请根据题目需要自行定义.
学习接口Learning(包含方法: 预习preLearn,上课lessons,复习reveiw)
喝酒接口Drinking(包含方法: 喝酒drink, 吐throwup,耍酒疯playMad)
抽象类Person(包含属性:姓名,性别,年龄; 抽象方法:谈恋爱love)
学生Student是人,得会学习,但不能喝酒(因为会使大脑变笨);他们还有自己的学校(school),还喜欢和朋友聊微信(chatting).
公务员Officer是人,不用学习,但经常需要喝酒应酬;他们还得经常开一些无聊的会议(meeting).

程序猿Programmer,是人,必须经常学习,较少社交所以不喝酒;他们特别喜欢写代码(coding),和修bug(debuging).

//学习接口

package oop;
public interface Learning {
    public void preLearn();
    public void lessons();
    public void reveiw();
}

//喝酒接口

package oop;

public interface Drinking {
      public void drink();
      public void throwup();
      public void playMad();
}

//父类Person

package oop;


/*
 * Person抽象类
 */
public abstract class Person {
private String name;
private String sex;
private int age;


public abstract void love();


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


}

//Student类

package oop;


public class Student extends Person implements Learning {
private String school;
 
public void chatting(){
System.out.println("学生喜欢和朋友聊微信!");
}
public String getSchool() {
System.out.println("学校名字:"+this.school);
return school;
}


public void setSchool(String school) {
this.school = school;
}
    
@Override
public void preLearn() {
System.out.println("学生预习!");
}


@Override
public void lessons() {
System.out.println("学生上课!");
}


@Override
public void reveiw() {
System.out.println("学生复习!");
}
@Override
public void love() {
System.out.println("学生可能在校期间谈恋爱!");

}


}

//officer类

package oop;


public class Officer extends Person implements Drinking {
    public void meeting(){
    System.out.println("公务员得经常开一些无聊的会议!");
     }
@Override
public void drink() {
  System.out.println("公务员需要喝酒应酬!");
}


@Override
public void throwup() {
System.out.println("公务员喝酒应酬后可能会吐!");
}


@Override
public void playMad() {
System.out.println("公务员喝酒应酬后可能会耍酒疯!");
}
@Override
public void love() {
// TODO Auto-generated method stub

}


}

//programmer类

package oop;


public class Programmer extends Person implements Learning {
    
public void coding(){
System.out.println("程序员喜欢写代码!");
}
public void debuging(){
System.out.println("程序员喜欢修bug!");
}


@Override
public void preLearn() {
System.out.println("程序员需要预习新的编程知识!");
}


@Override
public void lessons() {
System.out.println("程序员有可能也要上编程类的课程!");
}


@Override
public void reveiw() {
System.out.println("程序员需要巩固旧的编程知识!");
}
@Override
public void love() {
// TODO Auto-generated method stub

}


}

//test类

package oop;


public class Test {


public static void main(String[] args) {
Student stu=new Student();
Officer o=new Officer();
Programmer p=new Programmer();
method(stu);
method(p);
method(o);
/**学生对象
Person per=new Student();//向上转型
System.out.println(per instanceof Person);
System.out.println(per instanceof Student);

   Student stu1=(Student)per;//向下转型
   stu1.preLearn();//学生实现的方法
  
   stu1.chatting();
**/
}
public static void method(Person per){
if(per instanceof Student){
Student stu=(Student)per;//向下转型
stu.preLearn();
stu.lessons();
stu.reveiw();
stu.setSchool("明辉中学");
stu.getSchool();
stu.chatting();
}
if(per instanceof Officer){
Officer o=(Officer)per;
o.drink();
o.throwup();
o.playMad();
o.meeting();
}
if(per instanceof Programmer){
Programmer p=(Programmer)per;
p.preLearn();
p.reveiw();
p.coding();
p.debuging();
}
}



}

(2)在场景类Client中定义一个方法method1,在形参和实参上体现对象的多态性,在方法中进行调用,如果对象的实际类型是学生,
   就和朋友聊微信;如果是公务员,就去开会;如果是程序猿,就去写代码和修bug.

//clientl类

package oop2;


public class Client {
private String name;
    private int age;
    public Client(){
   
    }
    public Client(String name ,int age){
    this.name=name;
    this.age=age;
    }

public void method1(){

}
public String getName() {
return name;
}


public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}


}

//student类

package oop2;


public class Student extends Client {
    
public Student() {

}
    public Student(String name,int age){
    super(name,age);
    }
@Override
public void method1() {
System.out.println("学生和朋友聊天!");

}
       
}

//officer类

package oop2;


public class Officer extends Client{
public Officer(){

}
public Officer(String name,int age){
super(name, age);

}
     @Override
    public void method1() {
    System.out.println("公务员要开会!");
    }
}

//programmer类

package oop2;


public class Programmer extends Client{
public Programmer(){

}
public Programmer(String name,int age){
super(name, age);
}
@Override
   public void method1() {
  System.out.println("程序员写代码、修bug!");
   }
}

//test类

package oop2;


public class Test {


public static void main(String[] args) {
Student stu = new Student();
Officer o = new Officer();
Programmer p = new Programmer();
method(stu);   //实参调用方法
method(o);
method(p);


}


public static void method(Client c) {  //形参
if(c==null){
System.out.println("不能直接传递null!");
}
if (c instanceof Student) {
Student stu = (Student) c;//向下转型
stu.method1();
}
if (c instanceof Officer) {
Officer o = (Officer) c;
o.method1();
}
if (c instanceof Programmer) {
Programmer p= (Programmer) c;
p.method1();
}
}


}

(3)直接打印一个学生对象,就能以下面格式来输出:
学生信息:  姓名:张三,性别:男,年龄:20,学校:北大.

//student类

package object;

public class Student {
private String name;
private String sex;
private int age;
private String schoolname;
public Student(){

}


public Student(String name, String sex, int age, String schoolname) {
this.name=name;
this.sex=sex;
this.age=age;
this.schoolname=schoolname;
}
    public boolean equals(Object obj){
    Student stu=(Student)obj;  //向下转型
    if(this.name!=null && this.name.equals(stu.name) && this.sex.equals(stu.sex) 
    && this.age==(stu.age) && this.schoolname.equals(stu.schoolname)){
    return true;
    }
    return false;
    }
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 String getSchoolname() {
return schoolname;
}


public void setSchoolname(String schoolname) {
this.schoolname = schoolname;
}
@Override
public String toString() {

return "学生信息: 姓名:" + name + ", 性别:" + sex + ", 年龄:" + age
+",学校名称:"+schoolname+ ".";
}
}

//toString类

package object;


public class ToString {


public static void main(String[] args) {
Student stu=new Student("张三","男",20,"北大");
System.out.println(stu);
}


}

(4)如果两个学生的姓名、性别、年龄、学校一样,则认为这两个学生“相等”。

//student类

package object;

public class Student {
private String name;
private String sex;
private int age;
private String schoolname;
public Student(){

}


public Student(String name, String sex, int age, String schoolname) {
this.name=name;
this.sex=sex;
this.age=age;
this.schoolname=schoolname;
}
    public boolean equals(Object obj){
    Student stu=(Student)obj;  //向下转型
    if(this.name!=null && this.name.equals(stu.name) && this.sex.equals(stu.sex) 
    && this.age==(stu.age) && this.schoolname.equals(stu.schoolname)){
    return true;
    }
    return false;
    }
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 String getSchoolname() {
return schoolname;
}


public void setSchoolname(String schoolname) {
this.schoolname = schoolname;
}
@Override
public String toString() {

return "学生信息: 姓名:" + name + ", 性别:" + sex + ", 年龄:" + age
+",学校名称:"+schoolname+ ".";
}
}

//equals类

package object;


public class Equals {


public static void main(String[] args) {
Student stu=new Student("林夕","女",18,"北大");
Student stu1=new Student("林夕","女",18,"北大");
Student stu2=new Student("林杨","男",18,"清华");
        stu.equals(stu1);
        System.out.println(stu.equals(stu1)?"学生与学生1“相等”":"学生与学生1“不相等”");
        stu.equals(stu2);
        System.out.println(stu.equals(stu2)?"学生与学生2“相等”":"学生与学生2“不相等”");
}


}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值