(Java)类的接口实验

学校中有教师和学生两类人,而在职研究生既是教师又是学生。设计两个接口IStudent和ITeacher。其中,IStudent接口包含displayFee()方法用于显示学费;ITeacher接口包含displayPay()方法,用于显示教师的工资。
(1)定义一个学生类Student,它的成员变量有name,sex,age,fee。创建姓名为“Liping”的学生,他的学费为5000元。
(2)定义一个在职研究生类Graduate,它的成员变量有name,sex,age,fee,pay。创建一个姓名为“zhangsan”的研究生,统计他的年收入和学费,如果收入减去学费不足2000元,则显示学费时同时提示“provide a loan”(需要贷款)信息。 要求:在Graduate、Student中实现各个接口定义方法。 用接口变量调用接口方法 Student


> stu=new Student(); 
> IStudent is; 
> is=stu; 
> is. displayFee()

**

具体代码实现:

package edu.dali.dd;

public interface IStudent {
	public void displayFee();


}
package edu.dali.dd;

public interface ITeacher {
	public void displayPay();


}
package edu.dali.model;
import edu.dali.dd.*;
public class Graduates implements IStudent,ITeacher {
	private String name;
	private String sex;
	private String age;
	private int fee;
	private int pay;
	
	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 String getAge() {
		return age;
	}
	public void setAge(String age) {
		this.age = age;
	}
	public int getFee() {
		return fee;
	}
	public void setFee(int fee) {
		this.fee = fee;
	}
	public int getPay() {
		return pay;
	}
	public void setPay(int pay) {
		this.pay = pay;
	}
	public void displayPay() {
	System.out.println("工资是:"+getPay()+"元");

}
	public void displayFee() {
		
		if(pay-fee<2000) {
			
			System.out.println("provide a loan");
			System.out.println("学费是:"+getFee()+"元");
		}else {
				System.out.println("学费是:"+getFee()+"元");
				
			}
		
	}
		
}
package edu.dali.model;

import edu.dali.dd.*;

public class Student implements IStudent {
	private String name;
	private String sex;
	private String age;
	private int fee;
	
	
	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 String getAge() {
		return age;
	}

	public void setAge(String age) {
		this.age = age;
	}

	public int getFee() {
		return fee;
	}

	public void setFee(int fee) {
		this.fee = fee;
	}

	public void displayFee() {
		// TODO 自动生成的方法存根
		System.out.println("学费是:"+getFee());
		
	}


}

package edu.dali.stest;
import edu.dali.model.*;
import edu.dali.dd.*;
public class Test {

	public static void main(String[] args) {
		Graduates g=new Graduates();
		
		// TODO 自动生成的方法存根
		g.setName("Alice");
		g.setSex("man");
		g.setAge("18");
		g.setPay(8000);
		g.setFee(5000);
		
		System.out.println("姓名:"+g.getName());
		System.out.println("性别:"+g.getSex());
		System.out.println("年龄:"+g.getAge());
		
		IStudent ist;
		ITeacher ite;
		
		ist=g;
		ite=g;
		
		ite.displayPay();
		ist.displayFee();
		
		Student s=new Student();
		s.setName("Liping");
		s.setSex("女");
		s.setAge("21");
		s.setFee(5000);
		
		System.out.println("姓名:"+s.getName());
		System.out.println("性别:"+s.getSex());
		System.out.println("年龄:"+s.getAge());
		
		IStudent is;
		is=s;
		is.displayFee();
		
		
		
		
		

		
		
	}

}

请添加图片描述

**

2.实现类似植物大战僵尸游戏对象模型,需求如下:

1)有坚果墙、樱桃炸弹、西瓜投手三种植物,所有的植物都要消耗阳光,每种植物消耗阳光值不一样,坚果墙与西瓜投手会防御但防御值不一样,樱桃炸弹会攻击。
2)有FlagZombie、NormalZombie两种僵尸,都会防御与攻击,但防御与攻击能力不一样。
根据以上需求,设计并实现对象模型及相应接口,具体要求下如:
1)建立植物及僵尸两个抽象类作为父类,并建立坚果墙、樱桃炸弹、西瓜投手植物子类,建立FlagZombie、NormalZombie两种僵尸子类,创建相应的属性(名称、颜色、阳光值、生命值等)。
2)将消耗阳光、防御、攻击方法封装至三个不同的接口里。
3)根据需求对不同的植物或僵尸实现不同的接口,并实现应用的方法,方法功能只需作相应的文字输出即可。
4)对对象模型作测试。

package edu.dali.panttest;

import edu.dali.plant.Plant;
import edu.dali.plant.servece.IGongji;

public class Cherry extends Plant implements IGongji {

	@Override
	public void g() {
		System.out.println("我会爆炸");
		// TODO 自动生成的方法存根
		
	}

	@Override
	public void xhsun() {
		
		// TODO 自动生成的方法存根
		System.out.println("我消耗的阳光是:"+500);
		
	}

}

package edu.dali.panttest;

import edu.dali.plant.Plant;
import edu.dali.plant.servece.IFangYu;

public class jgwall extends Plant implements IFangYu {

	@Override
	public void f() {
		// TODO 自动生成的方法存根
		System.out.println("我会防御");
	}

	@Override
	public void xhsun() {
		// TODO 自动生成的方法存根
		System.out.println("我消耗的阳光是:"+600);
		
	}

}

package edu.dali.panttest;

import edu.dali.plant.Plant;
import edu.dali.plant.servece.IFangYu;

public class watemelon extends Plant implements IFangYu  {

	@Override
	public void f() {
		// TODO 自动生成的方法存根
		System.out.println("我会防御");
		
	}

	@Override
	public void xhsun() {
		// TODO 自动生成的方法存根
		System.out.println("我消耗的阳光是:"+800);
		
	}

}

package edu.dali.plant;

public abstract class Plant {
	private String name;
	private String color;
	private String sun;
	private String lifezhi;
	
	public String getLifezhi() {
		return lifezhi;
	}
	public void setLifezhi(String lifezhi) {
		this.lifezhi = lifezhi;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getColor() {
		return color;
	}
	public void setColor(String color) {
		this.color = color;
	}
	public String getSun() {
		return sun;
	}
	public void setSun(String sun) {
		this.sun = sun;
	}
	
	
	public abstract void xhsun() ;
		
		

}

``

package edu.dali.plant.servece;

public interface IFangYu {
	public void f();

}

package edu.dali.plant.servece;

public interface IGongji {
	public void g();


}

package Zombie;

import edu.dali.plant.servece.IFangYu;
import edu.dali.plant.servece.IGongji;

public class FlagZombie extends Zombie implements IGongji,IFangYu {

	@Override
	public void f() {
		// TODO 自动生成的方法存根
		System.out.println("我会用旗子保护自己");
		
	}

	@Override
	public void g() {
		// TODO 自动生成的方法存根
		System.out.println("我会丢旗子攻击植物");
		
	}

}

package Zombie;

import edu.dali.plant.servece.IFangYu;
import edu.dali.plant.servece.IGongji;

public class NoramlZombie extends Zombie implements IGongji,IFangYu {

	@Override
	public void g() {
		
		System.out.println("我会攻击植物");
		// TODO 自动生成的方法存根
		
	}

	@Override
	public void f() {
		System.out.println("我会防御保护");
		// TODO 自动生成的方法存根
		
	}

	

}

package Zombie;

public abstract class Zombie {
	private String name;
	private String color;
	private String sunshi;
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getColor() {
		return color;
	}
	public void setColor(String color) {
		this.color = color;
	}
	public String getSunshi() {
		return sunshi;
	}
	public void setSunshi(String sunshi) {
		this.sunshi = sunshi;
	}
	public String getLifezhi() {
		return lifezhi;
	}
	public void setLifezhi(String lifezhi) {
		this.lifezhi = lifezhi;
	}
	private String lifezhi;

}

package edu.dali.testZombbie;

import edu.dali.plant.Plant;
import edu.dali.plant.servece.*;
import Zombie.FlagZombie;
import Zombie.NoramlZombie;
import Zombie.Zombie;
import edu.dali.panttest.*;

public class ZZtest {

	public static void main(String[] args) {
		jgwall c1 = new jgwall();
		IFangYu f1;
		// TODO 自动生成的方法存根
		
		c1.setName("坚果墙");
		c1.setColor("yellow");
		c1.setLifezhi("200");
		c1.setSun("50");
		
		System.out.println("我的姓名:"+c1.getName()+":"+"我的颜色:"+c1.getColor()+":"+"我的阳光值:"+c1.getSun()+":"+"我的生命值"+c1.getLifezhi());
		c1.xhsun();
		
		f1=(jgwall)c1;
		f1.f();
		
		
		watemelon c2= new watemelon();
		IFangYu f2;
		
		c2.setName("西瓜投手");
		c2.setColor("green");
		c2.setLifezhi("560");
		c2.setSun("350");
		
		System.out.println("我的姓名:"+c2.getName()+":"+"我的颜色:"+c2.getColor()+":"+"我的阳光值:"+c2.getSun()+":"+"我的生命值"+c2.getLifezhi());
		
		c2.xhsun();
		
		f2=(watemelon)c2;
		
		f2.f();
		
		Cherry c3=new Cherry();
		
		IGongji a;
		
		c3.setName("樱桃炸弹");
		c3.setColor("red");
		c3.setLifezhi("200");
		c3.setSun("150");
		
		
		System.out.println("我的姓名:"+c3.getName()+":"+"我的颜色:"+c3.getColor()+":"+"我的阳光值:"+c3.getSun()+":"+"我的生命值"+c3.getLifezhi());
		
		c3.xhsun();
		a=(Cherry)c3;
		a.g();
		
		
		Zombie z1;
		IGongji a1;
		IFangYu f3;
		z1=new FlagZombie();
		
		z1.setName("旗子僵尸");
		z1.setColor("black");
		z1.setLifezhi("1000");
		z1.setSunshi("45");
		
		System.out.println("我的姓名:"+z1.getName()+":"+"我的颜色:"+z1.getColor()+":"+"我的生命值:"+z1.getLifezhi()+":"+"我的生命损失:"+z1.getSunshi());

		a1=(FlagZombie)z1;
		a1.g();
		
		f3=(FlagZombie)z1;
		f3.f();
		
		Zombie z2;
		IGongji a2;
		IFangYu f4;
		z2=new FlagZombie();
		
		z2.setName("普通僵尸");
		z2.setColor("black");
		z2.setLifezhi("400");
		z2.setSunshi("10");
		
		System.out.println("我的姓名:"+z2.getName()+":"+"我的颜色:"+z2.getColor()+":"+"我的生命值:"+z2.getLifezhi()+":"+"我的生命损失:"+z2.getSunshi());
		
		
		a2=(NoramlZombie)z2;
		a2.g();
		
		f4=(NoramlZombie)z2;
		f4.f();
	}

}

请添加图片描述
请添加图片描述

  • 5
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱吃冰粉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值