练习(四)

(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 usbAndClass;

/*
 * 定义一个抽象类Person(包含属性:姓名,性别,年龄; 抽象方法:谈恋爱love)
 */
public abstract class Person {
	private String name;
	private String sex;
	private String age;

	public Person() {

	}

	public Person(String name, String sex, String age) {
		this.name = name;
		this.sex = sex;
		this.age = age;
	}
package usbAndClass;

/*
 * 学习接口
 */
public interface Learning {
	public void prelearn();// “预习”方法

	public void lesson();// “上课”方法

	public void review();// “复习”方法
}
package usbAndClass;

/*
 * 喝酒接口Drinking
 */
public interface Drinking {
	public void drink();// 喝酒方法

	public void throwup();// 吐酒方法

	public void playMad();// 耍酒疯方法
}
package usbAndClass;

/*
 * 定义一个学生类,继承Person类并实现学习接口learning,学生有学校。
 */
public class Student extends Person implements Learning {
	private String school;

	public String getSchool() {
		return school;
	}

	public void setSchool(String school) {
		this.school = school;
	}

	public Student() {

	}

	public Student(String name, String sex, String age, String school) {
		super(name, sex, age);
		this.school = school;
	}

	public void prelearn() {// “预习”方法
		System.out.println("敲完这个代码就去预习信息论,微笑.jpg");

	}

	public void lesson() {// “听课”方法
		System.out.println("我爱学习");
	}

	public void review() {// “复习”方法
		System.out.println("如果学习它也爱我他就会自己复习自己");

	}

	public void love() {// 继承Person类的谈恋爱抽象方法
		System.out.println("谈恋爱吗,分手就割腕的那种");
	}

	public void chatting() {// 自己写的聊微信方法
		System.out.println(this.getName() + "爱和朋友聊微信");
	}

	public String toString() {// 重写toString()方法
		return "学生信息:   姓名:" + super.getName() + "   性别:" + super.getSex()
				+ "   年龄:" + super.getAge() + "   学校:" + this.getSchool();
	}

	public boolean equals(Student stu1) {// 重写equals()方法
		Student stu = (Student) stu1;
		if (this.getName() == stu.getName() && this.getSex() == stu.getSex()
				&& this.getAge() == stu.getAge()
				&& this.getSchool() == stu.getSchool()) {
			return true;
		}
		return false;
	}
}
package usbAndClass;

/*
 *公务员类,继承Person类并实现喝酒接口Drinking,还要开会。
 */

public class Officer extends Person implements Drinking {
	public Officer() {

	}

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

	public void drink() {// 喝酒方法
		System.out.println("应酬就得喝醉");

	}

	public void throwup() {// 吐酒方法
		System.out.println("喝醉就得吐");

	}

	public void playMad() {// 发疯方法
		System.out.println("发酒疯????!!!");

	}

	public void love() {// 继承父类的谈恋爱方法
		System.out.println("emmm...那就,谈个恋爱?嗯哼");

	}

	public void meeting() {// 开会方法
		System.out.println(this.getName() + "经常开开无聊的会");

	}

}
package usbAndClass;

/*
 * 程序员类,继承Person类,实现学习接口Learning
 */

public class Programmer extends Person implements Learning {
	public Programmer() {

	}

	public Programmer(String name, String sex, String age) {
		super(name, sex, age);
	}

	public void love() {// 继承Person中的谈恋爱方法
		System.out.println("立志找一个程序员,有好多好多钱哈哈哈");

	}

	public void prelearn() {// 预习方法
		System.out.println("寒假会好好预习。。。");

	}

	public void lesson() {// 听课方法
		System.out.println("努力成为优秀的程序员。。。");

	}

	public void review() {// 复习方法
		System.out.println("复习的话,写博客算吗?");

	}

	public void coding() {// 自定义的关于“写代码”的方法
		System.out.println(super.getName() + "特喜欢写代码");
	}

	public void debuging() {// 自定义的“改代码”的方法
		System.out.println(super.getName() + "还喜欢修bug");
	}

}
package usbAndClass;

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

public class Client {
	public static void main(String[] args) {
		Student stu = new Student("小白", "男", "20", "西安邮电大学");
		Officer off = new Officer("小林子", "男", "44");
		Programmer pro = new Programmer("大白", "男", "23");
		System.out.println("职业:学生");
		method1(stu);
		System.out.println("职业:公务员");
		method1(off);
		System.out.println("职业:程序员");
		method1(pro);
		System.out.println(stu);
		System.out.println("输出另一学生数据进行比对");
		Student stu1 = new Student("小白", "男", "20", "西安邮电大学");
		System.out.println("比较结果:" + stu.equals(stu1));
	}

	public static void method1(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();
		}
	}

}
程序结果截图:




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值