计算机工程学院实验报告
2017-2018学年第1学期
课程名称:
面向对象程序设计
专 业:
计算机科学与技术
班 级:
学 号:
姓 名:
指导教师:
实验名称:接口技术练习
实验日期:2017.11.07
实验平台:Windows 7 + JDK8+Eclipse
实验目的熟练掌握接口和接口技术的实现
实验内容与完成情况
1. 创建一个收费接口Charge,其中有一个抽象方法charge().
创建另一个收费接口Play,其中有一个抽象方法play().
声明类Bus来实现接口Charge,对于Bus中的charge(),实现为输出“公共汽车:1元/张,不计公里数”。
声明类Taxi来实现接口Charge,对于Taxi中的charge(),实现为输出“出租车:1.6元/公里,起价3公里
声明类Cinema来同时实现接口Charge,Play。对于Cinema中的charge(),实现为输出“解放电影院:30元/张,凭学生证享受半价。”
对于Cinema中的play(),实现输出为“正在放映电影。“
在主类中创建对象,输出结果。
代码:
package bhjx;
interface Charge{
void charge();
}
interface Play{
void play();
}
class bus implements Charge{
public void charge(){
System.out.println("公共汽车:1元/张,不计公里数");
}
}
class taxi implements Charge{
public void charge(){
System.out.println("出租车:1.6元/公里,起价3公里");
}
}
class cinema implements Charge,Play{
public void charge(){
System.out.println("解放电影院:30元/张,凭学生证享受半价");
}
public void play(){
System.out.println("正在放映电影");
}
}
public class fee {
public static void main(String[] args) {
bus b = new bus();
taxi t = new taxi();
cinema c = new cinema();
b.charge();
t.charge();
c.charge();c.play();
}
}
运行结果:
2. 定义资金操作接口Manage,抽象方法有double cunkuan(double m),double qukuan(double m)。设计银行账户Bank类实现资金操作接口Manage,成员变量账号,姓名,存款余额。构造方法,与输出当前余额方法disp()。
代码:
public class money1 {
public static void main(String[] args) {
Bank b=new Bank("154010101","张三丰",1000);
b.disp();
b.cunkuan(5000.0);
b.disp();
b.qukuan(1000);
b.disp();
} }
interface Manage{
double cunkuan(double n);
double qukuan(double n );
}
class Bank implements Manage{
String id;
String name;
double money;
Bank(String i,String n,double m){
id=i;
name=n;
money=m;}
public double cunkuan(double m){
return money= money+m;
}
public double qukuan(double m){
money=money-m;
return money; }
void disp(){
System.out.println("账户为:"+id+" 姓名:"+name+ " 账户余额为:"+money);
}
}
运行结果:
3. 重新定义 Manage,包含抽象方法operation(Bank b,double m),需要银行账户和存取款金额。Bank类中不在定义存取款方法。
定义cunkuan和qukuan类分别实现Manage的存取款方法。定义Caital类包含Caitaloperation(manage s,Bank b,double m)方法实现存取款功能,s对象如果是Caitaladd则实现存款,若是Caitaldesc,则实现取款操作,实现方法的多态性。主类中分别创建4个类的对象,实现存取款操作。
代码:
public class money2 {
public static void main(String[] args) {
Bank b=new Bank("154010101","张三丰",15000.0);
cunkuan a=new cunkuan();
qukuan c=new qukuan();
b.disp();
caital x=new caital();
x.caitaloperation( a,b,200);
b.disp();
x.caitaloperation( c,b,310);
b.disp();
} }
interface Manage{
double operation(Bank b,double m); }
class Bank{
String id;
String name;
double money;
Bank(String i,String n,double m){
id=i;
name=n;
money=m;
}
void disp(){
System.out.println("账户为:"+id+ " 姓名:"+name+ " 余额为:"+money);
} }
class cunkuan implements Manage{
public double operation(Bank b,double m){
b.money=b.money+m;
return b.money;
} }
class qukuan implements Manage{
public double operation(Bank b,double m){
b.money=b.money+m;
return b.money;
} }
class caital{
void caitaloperation(Manage s,Bank b,double m){
if(s instanceof cunkuan)
System.out.println("存款成功,当前余额为:"+ s.operation(b,m));
else if(s instanceof qukuan)
System.out.println("取款成功,当前余额为:"+ s.operation(b,m));
else System.out.println("金额输入有误");
} }
运行结果:
出现的问题及解决方案
实验中发现了自己的很多不足,比如对接口的implements用法及使用规范不熟悉,对各关键字的写法不熟悉。同时也了解了接口中的方法都是抽象的,不能实例化对象。
教师评阅意见
成绩: 教师签名: 日期: