文档库 最新最全的文档下载
当前位置:文档库 › Java实验7抽象类和接口

Java实验7抽象类和接口

Java实验7抽象类和接口
Java实验7抽象类和接口

实验6

抽象类和接口

一、实验目的:

1、学习掌握抽象类的概念和使用方法。

2、学习掌握接口的概念和定义接口的方法。

3、学习使用Cloneable接口和clone方法进行对象内容的复制。

4、理解浅复制和深复制的概念,掌握覆盖clone方法进行对象内容深复制的

技术。

二、实验任务:

1、学习掌握抽象类的概念和使用方法。程序要求:

(1)首先创建一个类家族,其中抽象类几何图形类GeometricObject为父类,圆类Circle和矩形类Rectangle为子类。几何图形类

GeometricObject中定义保护型字符串变量color,表示图形的颜色;

该类要具备构造方法和两个抽象方法findArea和findPerimeter,抽

象方法findArea求图形面积,抽象方法findPerimeter求图形周长。

(2)Circle类和Rectangle类是GeometricObject类的子类,其中应实现父类的抽象方法。

(3)程序主方法中创建两个几何对象,一个圆和一个矩形,并用GeometricObject类的引用变量引用它们,调用抽象方法。

2、学习接口的概念和利用接口实现多态的方法。程序要求如下:

(1)首先创建圆类Circle和圆柱体类Cylinder,其中Circle类是父类,Cylinder类是子类;

(2)创建接口Comparable,其中包含一个抽象方法compareTo,用来比较对象的大小。抽象方法compareTo的形式如下:

public int compareTo(Object o);

(3)创建类ComparableCircle,该类为Circle类的子类,并实现Comparable接口。

(4)创建类ComparableCylinder,该类为Cylinder类的子类,并实现Comparable接口。

(5)创建通用类Max,其中包含通用方法max,只要类实现了Comparable接口,就可以使用max方法返回两个对象中较大的一

个。Max方法的方法名称为:

public static Comparable max(Comparable o1, Comparable o2) (6)程序的主方法中分别创建两个ComparableCircle类对象和两个ComparableCylinder类对象,并分别以它们为参数调用max方法,

返回两个对象中面积较大的一个。

3、选做题:进一步深入学习多态特性以及利用Cloneable接口和clone方法

实现对象内容的拷贝,并学习消除浅拷贝(浅复制)的方法。程序要求如下:(1)创建Circle类,表示圆;

(2)创建Name类,表示人名,其中包含三个String类型的数据成员:firstName,middlName和lastName。

(3)创建CloneableCircle类,CloneableCircle类是Circle类的子类,并

实现了Cloneable接口。要求CloneableCircle类中有一个Name类

型的数据成员creator,代表圆对象的创建者姓名。

(4)在CloneableCircle类中实现clone方法,以实现两个CloneableCircle 类对象内容的克隆。要求实现对象内容深拷贝(深复制)。

(5)为了实现CloneableCircle类对象的深拷贝,Name类也应该实现Cloneable接口,并实现clone方法。

(6)程序的主方法中使用clone方法完成两个CloneableCircle类对象的深拷贝。

三、实验步骤:

1.参考代码:

abstract class GeometricObject

{

protected String color;

protected double weight;

protected GeometricObject(String color, double weight)

{

this.color = color;

this.weight = weight;

}

public abstract double findArea();

public abstract double findPerimeter();

}

class Circle extends GeometricObject

{

protected double radius;

public Circle(double radius)

{

super("white", 1.0);

this.radius = radius;

}

public double findArea()

{

return radius*radius*Math.PI;

}

public double findPerimeter()

{

return 2*radius*Math.PI;

}

}

class Rectangle extends GeometricObject

{

protected double width;

protected double height;

public Rectangle(double width, double height)

{

super("white", 1.0);

this.width = width;

this.height = height;

}

public double findArea()

{

return width*height;

}

public double findPerimeter()

{

return 2*(width + height);

}

}

public class TestAb

{

public static void main(String[] args)

{

GeometricObject a1 = new Circle(5);

GeometricObject a2= new Rectangle(5, 3);

test(a1);

test(a2);

}

public static void test(GeometricObject a) {

System.out.println(a.findArea());

}

}

2.参考代码:

//Circle类的实现

class Circle

{

protected double radius;

public Circle()

{

radius=1.0;

}

public Circle(double r)

{

radius=r;

}

double getRadius(){return radius;}

public double findArea()

{

return radius*radius*Math.PI;

}

}

// Cylinder的实现

class Cylinder extends Circle

{

private double length;

public Cylinder()

{

super();

length = 1.0;

}

public Cylinder(double r, double l)

{

super(r);

length = l;

}

public double findArea()

{

return 2*super.findArea()+(2*getRadius()*Math.PI)*length; }

public double findV olume()

{

return super.findArea()*length;

}

}

// ComparableCircle类的实现

class ComparableCircle extends Circle implements Comparable {

public ComparableCircle(double r)

{

super(r);

}

public int compareTo(Object o)

{

if (findArea() > ((Circle)o).findArea())

return 1;

else if (findArea() < ((Circle)o).findArea())

return -1;

else

return 0;

}

}

// ComparableCylinder类的实现

class ComparableCylinder extends Cylinder implements Comparable {

ComparableCylinder(double r, double l)

{

super(r, l);

}

public int compareTo(Object o)

{

if (findV olume() > ((Cylinder)o).findV olume())

return 1;

else if (findV olume() < ((Cylinder)o).findV olume())

return -1;

else

return 0;

}

}

//Max类实现

class Max

{

public static Comparable max(Comparable o1, Comparable o2) {

if (https://www.wendangku.net/doc/9b3167020.html,pareTo(o2) > 0)

return o1;

else

return o2;

}

}

//主函数类的实现

public class TestInterface

{

public static void main(String[] args)

{

ComparableCircle circle1 = new ComparableCircle(5);

ComparableCircle circle2 = new ComparableCircle(4);

Comparable circle = Max.max(circle1, circle2);

System.out.println("最大圆半径为:" +

((Circle)circle).getRadius());

ComparableCylinder cylinder1 = new ComparableCylinder(5, 2);

ComparableCylinder cylinder2 = new ComparableCylinder(4, 5);

Comparable cylinder = Max.max(cylinder1, cylinder2);

System.out.println("最大圆柱体信息:" +

((Cylinder)cylinder).getRadius() + " 体积:" +

((Cylinder)cylinder).findV olume());

}

}

四、实验难点:

接口的定义和运用。

接口和抽象类习题-答案

(一)选择题 1.以下哪个接口的定义是正确的? A.interface B{ void print() { } ; } B.abstract interface B { void print() ; } C.abstract interface B extends A1,A2 { abstract void print(){ }; } D.interface B { void print();} 2.定义一个接口时,下列哪个关键字用不到? A.public B.extends C.interface D.class 3.定义一个接口时,要使用如下哪个关键字? A.abstract B.final C.interface D.class 4.在使用interface声明一个接口时,只可以使用哪个修饰符修饰该接口。 A.private B.protected C.private或者protected D.public 5.下列类头定义中,错误的是? A.public x extends y B.public class x extends y C.class x extends y implements y1 D.class x 6.下列类定义中,不正确的是? A.class x B.class x extends y C.class x implements y1,y2 D.public class x extends X1,X2 7.Java中能实现多重继承功能的方式是? A.接口 B.同步 C.抽象类 D.父类 8.下列叙述正确的是? A.Java中允许多重继承 B.Java一个类只能实现一个接口 C.Java中只能单重继承 D.Java中一个类可以继承多个抽象类 (二)简答题

实验11-类继承与接口(三)实验报告

浙江大学城市学院实验报告 课程名称:面向对象程序设计 实验项目名称:类继承与接口(三) 学生姓名专业:学号: 实验地点:实验日期:年月日 【实验目的】 1.巩固Java类继承的相关知识 2.理解对象上转型技术的优点和用途。 3.掌握接口的特点 4.接口与抽象类的异同之处 【实验内容】 一、类继承相关知识强化 1. 执行以下程序,给出执行Bbb的结果,并说明指出类Bbb的this.i与super.i的含义(即它们都对应哪个变量)。 class Aaa{ int i; Aaa(int a){ i = a;} } class Bbb extends Aaa{ int j,k; Bbb(int i){ super(i); j = this.i; k = super.i; } public static void main(String[] args){ Bbb b = new Bbb(18); System.out.println(b.j +"\t" + b.k); } } 执行Bbb的结果:

this.i与super.i的含义(即它们都对应哪个类中定义的变量): 都对应Aaa类中的变量。 2.接着上面例子,将类Bbb改写为以下代码,请写出程序运行结果,并说明这个例子与上面例子的区别。 class Bbb extends Aaa{ int i= -1,j= -1,k= -1; //比上面例子增加一个实例变量i; Bbb(int i){ super(i); j = this.i; //本语句含义是:Bbb类中的变量i的值赋给j k = super.i; //本语句含义是:访问Aaa类中的变量i并将值赋给k } public static void main(String[] args){ Bbb b = new Bbb(18); System.out.println(b.j +"\t" + b.k); } } 执行Bbb的结果: -1 18 这个例子与上面例子的区别: 在Bbb类中也定义了变量i,将Bbb的直接超类Aaa中的变量i给覆盖掉了。 3.对以下程序,给出执行Bbb的结果,并分析Bbb中main方法中a.show(1), b.show(1), c.show(1)的结果。 class Aaa{ void show(){ System.out.println("Aaa中定义的show()"); } void show(int i){ System.out.println("Aaa中定义的show(int i)"); } } class Bbb extends Aaa{ void show(){ System.out.println("Bbb中定义的show()"); }

接口和抽象类习题-答案

一)选择题 1. 以下哪个接口的定义是正确的? A. interface B{ void print() { } ; } B. abstract interface B { void print() ; } C. ab stract interface B extends A1,A2 { abstract void print(){ }; } D. interface B { void print();} 2. 定义一个接口时,下列哪个关键字用不到? A. public B. extends C. interface D. class 3. 定义一个接口时,要使用如下哪个关键字? A. abstract B. final C. interface D. class 4. 在使用interface 声明一个接口时,只可以使用哪个修饰符修饰该接口。 A. private B. protected C. private 或者protected D. public 5. 下列类头定义中,错误的是

A. public x extends y B. public class x extends y C. class x extends y implements y1 D. class x 6. 下列类定义中,不正确的是? A. class x B. class x extends y C. class x implements y1,y2 D. public class x extends X1,X2 7. Java 中能实现多重继承功能的方式是? A. 接口 B侗步 C. 抽象类 D. 父类 8. 下列叙述正确的是? A. Java 中允许多重继承 B. Java 一个类只能实现一个接口 C. Java 中只能单重继承 D. Java 中一个类可以继承多个抽象类 (二)简答题 1) 接口中方法的修饰符都有哪些?属性的修饰符有哪些? 2) 接口的作用是什么?简述接口与类的关系。

实验七 抽象类、包与接口

实验七抽象类、接口与包 一、实验目的 1、熟练掌握抽象类abstract的概念。 2、熟练掌握接口interface的概念。 3、熟练包package的概念以及编译运行的方法。 二、实验内容与要求 1.编写求解几何图形(如三角形,矩型,圆,多边型)的周长、面积的应用程序,要求用到继承、多态、抽象类、接口、内部类等面向对象程序设计技术的特点。 2、重写上面的程序,要求三角形,矩型,圆,多边型的类放到不同的包中,用包的技术组织程序的设计。同时要求程序能从键盘上接受数据以便求解不同的几何图形的周长面积。提示:从键盘上输入双精度数的一种方法(程序片段) …… public static void main(String args[]) throws IOException { BufferedReader keyin=new BufferedReader(new InputStreamReader(System.in)); String x; x=keyin.readLine(); double a=Double.parseDouble(x); …… 3.练习https://www.wendangku.net/doc/9b3167020.html,ng.Class类的使用,通过一个对象返回一个Class对象,如何获取一个类的名称,如何使用class生成一个类的对象。获取类的描述信息。 4.从命令行输入一个正整数,用递归的方法求出每位数字上的累加和 5、编写一个应用程序,实现以下功能: ①声明一个接口(Calculability),接口中包含一个方法area()。 ②声明一个三角形类继承该接口,类名为Triangle,类中包含两个变量、一个带参数年的构造方法和一个计算三角形面积的方法: 三角形的底边长w 三角形的高h 构造方法Triangle(double width,double height)。 计算三角形面积的方法area(),该方法覆盖接口(Calculability)的同名方法,计算三角形的面积(w*h/2)。 ③声明一个锥体类(Taper),包含一个接口对象bottom(锥体的底)和一个变量(锥体的高)height,一个带参数的构造方法,一个换底方法getbottom(),一个锥体体积的计算方法volume()。 ④声明一个主类Exp6_1,在主方法中声明接口和锥体类的对象,输出锥体的底面积和锥体的体积(bottom*height/3)。

北京信息科技大学Java语言程序设计-抽象类和接口

实验4抽象类与接口 【实验宗旨】 每天做一点编程练习。 【实验目得】 1、学习与掌握Java抽象类得定义与使用. 2、学习与掌握Java接口得定义与使用。 3、进一步学习与掌握通用程序设计方法。 【实验步骤(解题过程)】 参见实验2. 【实验内容】 1、(pareableCirlce类)创建名为pareableCircle类,它扩展Cir cle类并实现pareable接口。画出UML图,实现pareTo方法,使其可以根据面积比较两个圆。编写一个测试程序求出pareableCircle对象得两个实例中得较大者。 说明:⑴来源编程练习14、2(P399))。⑵java、lang、pareable接口参见14、5小节(P378).⑶Circle类得实现,参见程序清单11、2(P303)。【实验预习】 1.问题描述:该题描述得就是创建一个pareableCircle类来实现两个圆得 比较. 2.创建两个pareableCircle类得实例,利用parable接口,并调用p arableMax方法实现。 【附程序代码】 SuppressWarnings(”unchecked") public class testpareableCircle{ //主方法 ?public static void main(String[]args){ ??pareableCircle C1=new pareableCircle(10); ?pareableCircle C2=newpareableCircle(3); ??System、out、println("The maxnium Circle is "+parableMax(C 1,C2)+"得圆"); ?} //比较两个圆得大小 publicstaticparable parableMax(parableC1,parable C2) ?{ ??if(C1、pareTo(C2)>0) ??return C1; ??else return C2; } } public class pareableCircle extends Circle implementsparable{ ?//建立个指定半径得圆 pareableCircle(double radius){

实验7 抽象类

实验7 抽象类 一、实验目的 掌握抽象类的定义,理解抽象类与一般类的区别。进一步理解多态性的概念。 二、实验要求 1.掌握抽象类的定义,理解抽象方法。 2.掌握抽象类的使用。 三、实验内容 1)制作一个销售首饰的公司类。 属性: 一个保存员工的数组(也可采用Vector类来保存员工)。 方法: 1, 添加一个员工。 2, 通过员工的名字来删除员工。 3, 通过员工的名字来显示员工的工资。 4, 输出所有员工的工资和。 2)定义一个抽象员工类 属性:姓名,基本工资 抽象方法:计算工资。 3)子类:小时工类 属性: 工作的小时,每小时工资。 方法: 1. 设置工作的小时 2. 设置每小时的工资。 3. 重写计算工资方法: 小时工没有基本工资,他的工资就是工作的小时*每小时工资。 4)子类:销售员工类 属性: 销售的总金额 方法 1. 设置销售的总金额

2. 重写计算工资方法: 基本工资+提成。 提成的计算: 当销售额再10000 以下时,则提成10%, 等销售额再10000-100000之间是,则提成15%。 再100000以上是,提成18%。 5)子类:普通员工类 属性: 工作的小时 方法: 1. 设置工作的小时 2. 重写计算工资的方法: 当每月工作的小时数超过196 小时时,超出的部分按每小时200 元。基本工资+(工作的小时-196)*200。 6)在main 函数中生成 一个公司对象; 一个小时工的对象,每小时工资10,工作200 小时; 一个小时工的对象,每小时工资10,工作230小时; 一个销售员工的对象,基本工资1000,销售额5000; 一个销售员工的对象,基本工资1000,销售额200000; 一个普通员工对象,基本工资1200,工作小时205 小时。 (注:员工的姓名可自行拟定。) 将以上员工对象加入公司对象中,然后调用输出所有员工工资和的方法,查看该公司该月应该发的工资总和。 7)随着该公司的业务扩展,该公司决定自己生产首饰,该公司多了一种新的类型的员工,首饰工人。 定义首饰工人类: 属性 生产首饰的数量 方法 1 设置生产首饰的数量 2 重写计算工资的方法 工资== 设置生产首饰的数量*50; 8) 在main 函数中多生成一个首饰工人对象,生产首饰的数量30; 将该对象加入公司对象中, 然后调用输出所有员工工资和的方法,查看该公司该月应该发的工资总和。 四、思考题 继承,多态对于程序的可维护,可扩展带来的好处。

Java实验7抽象类和接口

实验6 抽象类和接口 一、实验目的: 1、学习掌握抽象类的概念和使用方法。 2、学习掌握接口的概念和定义接口的方法。 3、学习使用Cloneable接口和clone方法进行对象内容的复制。 4、理解浅复制和深复制的概念,掌握覆盖clone方法进行对象内容深复制 的技术。 二、实验任务: 1、学习掌握抽象类的概念和使用方法。程序要求: (1)首先创建一个类家族,其中抽象类几何图形类GeometricObject为父类,圆类Circle和矩形类Rectangle为子类。几何图形类 GeometricObject中定义保护型字符串变量color,表示图形的颜色; 该类要具备构造方法和两个抽象方法findArea和findPerimeter,抽 象方法findArea求图形面积,抽象方法findPerimeter求图形周长。 (2)Circle类和Rectangle类是GeometricObject类的子类,其中应实现父类的抽象方法。 (3)程序主方法中创建两个几何对象,一个圆和一个矩形,并用GeometricObject类的引用变量引用它们,调用抽象方法。 2、学习接口的概念和利用接口实现多态的方法。程序要求如下: (1)首先创建圆类Circle和圆柱体类Cylinder,其中Circle类是父类,Cylinder类是子类; (2)创建接口Comparable,其中包含一个抽象方法compareTo,用来比较对象的大小。抽象方法compareTo的形式如下: public int compareTo(Object o); (3)创建类ComparableCircle,该类为Circle类的子类,并实现

实验13-抽象类和接口教学教材

实验13 接口 一、实验目的 (1)熟悉接口的定义方法。 (2)了解Java语言实现多继承的途径。 二、实验内容 第一题: 学校中有老师和学生两类人,而在职研究生既是老师又是学生,对学生的被管理和对于教师的责任管理在他们身上都有体现。 (1)设计两个信息管理接口StudentManageInterface和TeacherManageInterface。其中,StudentInterface接口包括setFee( )方法和getFee( )方法,分别用于设置和获取学生的学费:TeacherInterface接口包括setPay( ) 方法和getPay( ) 方法,分别用于设置和获取老师的工资。 (2)定义一个研究生类Graduate,实现StudentInterface接口和TeacherInterface接口,它定义的成员变量有name(姓名)、sex(性别)、age(年龄)、fee(每学期学费)、pay(月工资)。 (3)创建一个姓名为“zhangsan"的研究生,统计他的年收入和学费,如果收入减去学 费不足2000元,则输出“provide a loan”(需要贷款)信息。 要求: (1)在Graduate中实现各个接口定义的抽象方法。 (2)对年学费和年收入进行统计,用收入减去学费,如果小于2000元则显示“provide a loan”信息。 第二题: 定义一个抽象类Bank,它包含有oneyearRate(定期利率)、oneyearNationaldebt(国债利率)和interestRate(活期利率)常数和count()方法及show()方法。Count()方法用语对本息合计(存款本金+利息)进行计算,而show()方法用于对本息合计进行显示。由于对不同的存款方式,利率是不同的,因此此程序分别定义多个子类实现对抽象类的继承,实现对利率的计算和显示。 注意: 本程序定义了定期利率、活期利率、国债利率三种利率,按照一万元钱位存款单位进行统计,计算每种利率下存款一年后的本息合计。除了国债外,其他利率都要交纳个人所得税20%。 abstract class Bank { protected static final float oneyearRate=0.0178f; //定期利率 protected static final float oneyearNationaldebt=0.0198f; //国债利率 protected static final float interestRate=0.0078f; //活期利率 abstract void count(); abstract void show(); } class InterestRateCalcute extends Bank { private float saving; private double sum; InterestRateCalcute(float i) { saving=i;count(); } public void count(){

实验六 抽象类、包与接口

实验五抽象类、接口与包 一、实验目的 1、熟练掌握抽象类abstract的概念。 2、熟练掌握接口interface的概念。 3、熟练包package的概念以及编译运行的方法。 4、熟练掌握内部类inner class的概念。 5、熟练掌握递归的概念。 6、理解面向对象的程序设计方法。 二、实验内容与要求 1.编写求解几何图形(如三角形,矩型,圆,多边型)的周长、面积的应用程序,要求用到继承、多态、抽象类、接口、内部类等面向对象程序设计技术的特点。 2、重写上面的程序,要求三角形,矩型,圆,多边型的类放到不同的包中,用包的技术组织程序的设计。同时要求程序能从键盘上接受数据以便求解不同的几何图形的周长面积。提示:从键盘上输入双精度数的一种方法(程序片段) …… public static void main(String args[]) throws IOException { BufferedReader keyin=new BufferedReader(new InputStreamReader(System.in)); String x; x=keyin.readLine(); double a=Double.parseDouble(x); …… 3.练习https://www.wendangku.net/doc/9b3167020.html,ng.Class类的使用,通过一个对象返回一个Class对象,如何获取一个类的名称,如何使用class生成一个类的对象。获取类的描述信息。 4、编写一个应用程序,实现以下功能: ①声明一个接口(Calculability),接口中包含一个方法area()。 ②声明一个三角形类继承该接口,类名为Triangle,类中包含两个变量、一个带参数的构造方法和一个计算三角形面积的方法: 三角形的底边长w 三角形的高h 构造方法Triangle(double width,double height)。 计算三角形面积的方法area(),该方法覆盖接口(Calculability)的同名方法,计算三角形的面积(w*h/2)。 ③声明一个锥体类(Taper),包含一个接口对象bottom(锥体的底)和一个变量(锥体的高)height,一个带参数的构造方法,一个换底方法getbottom(),一个锥体体积的计算方法volume()。

抽象类和接口测试题

1. Java中用来实现继承的关键字是____ A、extends B、implements C、public D、protected 2.如果要用到一个接口的关键字是____ A、import B、implements C、extends D、final 3.接口是Java面向对象的实现机制之一,以下说法正确的是 A、Java支持多重继承,一个类可以实现多个接口 B、Java只支持单重继承,一个类可以实现多个接口 C、Java只支持单重继承,一个类只可以实现一个接口 D、Java支持多重继承,但一个类只可以实现一个接口 4.请分析以下代码,请问下面____不可以产生Q8对象? public class Q8{ public Q8(int i){} public Q8(int i,float f){} } A、Q8 q=new Q8(); B、Q8 q=new Q8(10); C、Q8 q=new Q8(10,10f); D、以上方法均不可以 5.设有下面两个类的定义: class Person { long id; String name; } Class Student extends Person{ int scroe; int getScore(){} } 则类Student和类Person的关系是____ A、包含关系 B、继承关系 C、关联关系 D、上述类定义有语法错误 7. ____类是JAVA语言中所有类的父类。 A、class B、https://www.wendangku.net/doc/9b3167020.html,ng C、Object D、以上都不正确 8. 下列关于抽象类描述正确的是__有问题__ A、某个抽象类的父类是抽象类,则这个类必须要重写父类中的所有抽象方法 B、接口和抽象类是一回事 C、可以使用抽象类去创建对象 D、抽象类中不可以有非抽象方法 10.下面的程序输出的结果是____ public class A implements B { int k=20; public static void main(String args[]) { int i; B c1 = new A(); i= c1.k; System.out.println("i="+i); } } interface B { int k = 10; } A) i=20 B) i=10 C) 程序有编译错误 D) i=true

接口和抽象类习题-发给学生做

(一)选择题 1)以下哪个接口的定义是正确的? a) A.interface B{ void print() { } ; } b) B.abstract interface B { void print() ; } c) C.abstract interface B extends A1,A2 { abstract void print(){ }; } d) D.interface B { void print();} 2)定义一个接口时,下列哪个关键字用不到? a)public b)extends c)interface d)class 3)定义一个接口时,要使用如下哪个关键字? a)abstract b)final c)interface d)class 4)在使用interface声明一个接口时,只可以使用哪个修饰符修饰该接口。 a)private b)protected c)private或者protected d)public 5)下列类头定义中,错误的是? a)public x extends y b)public class x extends y c)class x extends y implements y1 d)class x 6)下列类定义中,不正确的是? a)class x b)class x extends y c)class x implements y1,y2 d)public class x extends X1,X2 7)Java中能实现多重继承功能的方式是? a)接口 b)同步 c)抽象类 d)父类 8)下列叙述正确的是? a)Java中允许多重继承 b)Java一个类只能实现一个接口 c)Java中只能单重继承 d)Java中一个类可以继承多个抽象类 (二)简答题

java实验七

《Java 语言程序设计》实验报告(七) 实验名称:___________指导教师:___________ 实验日期:________ 专业:_______________班 级:___________姓 名:________ 包、接口抽象类 张鑫 2015-11-20 电子商务 电子商务1302 李鸿儒

三、实验结果与结论:(经调试正确的源程序(核心部分)和程序的运行结果) LX4_2.java程序执行结果如图1所示: 图1 InterfaceTester.java程序执行结果如图2所示: 图2 1、定义一个抽象基类Shape,它包含三个抽象方法center()、diameter()、getArea(),从Shape类派生出Square和Circle类,这两个类都用center()计算对象的中心坐标,diameter()计算对象的外界圆直径,getArea()方法计算对象的面积。编写编写应用程序使用Rectangle类和Circle类。 Math7_1.java源程序如下: abstract class Shape{ int x1,y1,x2,y2; Shape(int x1,int y1,int x2,int y2){ this.x1=x1; this.y1=y1; this.x2=x2; this.y2=y2; } public abstract String center(); public abstract double diameter(); public abstract double getArea(); } class Square extends Shape{ Square(int x1,int y1,int x2,int y2){ super(x1,y1,x2,y2); }

实验5:Java抽象类与接口

实验5:Java抽象类与接口 实验时间:实验地点:一、实验目的及要求 (1)掌握抽象类的概念及使用。 (2)掌握接口的概念和实现方式。 (3)理解抽象类和接口的区别。 二、实验设备环境及要求 三、实验任务 (1)输入给定的Java Application程序,写出运行结果。 (2)按照要求编写Java Application程序。 四、实验内容与步骤 1.分析下列程序的输出结果。 interface Myface{ int getnext(); void setstart(int x); } class Add3 implements Myface{ int sta,val; Add3(){ sta=0;val=0; } public int getnext(){ val+=3; return val; } public void setstart(int i){ sta=i;

val=i; } } public class Face{ public static void main(String args[]){ Add3 a=new Add3(); for(int i=0;i<5;i++) System.out.println(a.getnext()); System.out.println(); a.setstart(10); for(int i=0;i<5;i++) System.out.println(a.getnext()); } } 2.按照要求编写Java Application程序。 假定要为某个公司编写雇员工资支付程序。这个公司有各种类型的雇员(Employee),不同类型的雇员按不同的方式支付工资: 经理(Manager):每月获得一份固定的工资; 销售人员(Salesman):在基本工资的基础上每月还有销售提成; 一般工人(Worker):则按他每月工作的天数计算工资。 试用类的继承及相关机制描述这些功能需求,并编写一个Java Application程序,演示这些类的用法。 五、实验指导与处理 六、分析讨论

java实验7 抽象类与最终类 - 答案

实验七抽象类与最终类 一、实验时间:姓名:学号: 二、实验目的 1、理解抽象类和最终类的作用; 2、掌握抽象类和最终类的定义方式; 3、掌握抽象类和最终类的应用; 三、知识点 1、抽象类和最终类的定义; 2、抽象类和最终类的应用; 四、实验内容与步骤 1、编写程序为公共汽车、出租车和电影院类提供一定的收费功能,将收费功能提取出来, 以抽象类的形式定义,然后被公共汽车类、出租车类和电影院类继承。 //抽象类 public abstract class PayInter { public abstract double shoufei(); } //公交车类 public class Bus extends PayInter { @Override public double shoufei() { // TODO Auto-generated method stub return 2; } } //出租车类 public class Taxi extends PayInter { private int distance; @Override public double shoufei() { // TODO Auto-generated method stub return 10+0.4*distance; } } //电影院类 public class Cinema extends PayInter { @Override public double shoufei() {

// TODO Auto-generated method stub return 80; } } 2、编写程序分别设计声卡类、显卡类和内存卡类的工作方式,将其工作功能提取,以抽 象类的形式定义,然后被这三种卡类继承。再定义一个主板类,可以在主板上使用这三类卡。最后编写一个测试类,用于测试这三类卡在主板上的工作方式。 //抽象类 public abstract class PC_Card { void work(); } //声卡 public class SoundCard extends PC_Card{ public void work(){ System.out.println("La La La......"); } } //显卡 public class VisualCard extends PC_Card{ public void work(){ System.out.println("Zi zi zi......"); } } //内存卡 public class NeicunCard extends PC_Card{ public void work(){ System.out.println("Du du du......"); } } //主板 public class MainBoard { public void useCard(PC_Card c){ c.work(); } } //测试类 public class TestMB { public static void main(String[] args) { MainBoard m=new MainBoard(); PC_Card sc=new SoundCard(); PC_Card vc=new VisualCard(); PC_Card nc=new NeicunCard(); https://www.wendangku.net/doc/9b3167020.html,eCard(sc); https://www.wendangku.net/doc/9b3167020.html,eCard(vc); https://www.wendangku.net/doc/9b3167020.html,eCard(nc); }

实验三 抽象类、接口与包

实验教案 实验目的要求 1.熟练掌握抽象类abstract的概念。 2.熟练掌握接口interface的概念。 3.熟练包package的概念以及编译运行的方法。 4.理解面向对象的程序设计方法。 实验环境 JDK1.8+Eclpise 实验准备 1.复习课件中理论知识 2.练习课堂所讲的例子 实验内容与步骤 1.继承的实现 (1)按如下类图编写代码 (2)编写测试类并创建main()方法,完成如下操作 A.分别创建Person、Student、Teacher对象,完成属性和每个方法的调用测试 B.在Student和Teacher中完成eat()方法的重写 C.编写类型转化示例(向上类型转化、向下类型转化) 2.面向抽象编程 设计如下系统:有一个柱类(Pillar类)其底面可以是圆,三角形,长方形,柱类中有getVolumn方法,针对不同的底面求出柱体的体积。 3.多态

在完成(2)中Student、Teacher类eat()方法重载后,在测试类中编写如下代码并在main()方法中调用static void askAllToEat(Person[] ps) { for(inti=0;i

实验抽象类和接口

实验10 抽象类和接口 一、实验名称和性质 二、实验目地 1. 设计并使用抽象类; 2.学习如何定义接口,掌握接口地实现方式,使用实现了接口地类; 3.理解接口与抽象类地区别. 三、实验内容 1.设计和实现一个Soundable接口,该接口具有发声功能,同时还能调节声音大小.Soundable接口地这些功能将会由3种声音设备来具体实现,他们分别是收音机Radio、随身听Walkman和手机Mobilephone.同时需要设计一个应用程序类来使用这些实现了Soundable接口地声音设备类.在程序运行时,先询问用户想听那种设备发出声音,然后程序就会按照该设备地工作方式来发出声音(验证性实验). 2.程序会要求用户以规范地格式输入自己地生日日期,然后将使用Date类和Calendar 类中地方法计算出用户地生日是星期几,用户地年龄以及出生地年份是否是闰年. 四、实验地软硬件环境要求 硬件环境要求: PC计算机;内存512MB以上 使用地软件名称、版本号以及模块: 操作系统:Windows XP或Windows 7 软件:JDK 7.0;Eclipse 五、知识准备 前期要求掌握地知识:了解Java中地抽象类和接口. 实验相关理论或原理: 1、Java接口和Java抽象类最大地一个区别,就在于Java抽象类可以提供某些方法地部 分实现,而Java接口不可以,这大概就是Java抽象类唯一地优点吧,但这个优点非常有用.如果向一个抽象类里加入一个新地具体方法时,那么它所有地子类都将得到了这个新方法,而Java接口做不到这一点,如果向一个Java接口里加入一个新方法,所有实现这个接口地类就无法成功通过编译了,因为你必须让每一个类都再实现这个方法才行,这显然是Java接口地缺点. 2、一个抽象类地实现只能由这个抽象类地子类给出,也就是说,这个实现处在抽象类

实验5 抽象类和接口

南昌大学实验报告 学生姓名:王维学号:6100212202 专业班级:网工121班 实验类型:■验证□综合□设计□创新实验日期:实验成绩: 实验5 抽象类和接口 一、实验目的 1、掌握抽象类abstract的概念。 2、掌握接口interface的概念。 3、掌握抽象类、接口的定义、实现与使用; 4、理解接口和继承的混合使用 二、实验内容 1、课本p399 14.3题和14.7题 2、将课本中的GeometricObject类改为接口,重新设计circle、rectangle类,实现相应的功能。 三、实验要求 1、通过上述程序的设计,清楚java中抽象类、接口的定义、实现与使用; 四、实验环境 1、PC微机; 2、DOS操作系统或 Windows 操作系统; 3、Sdk程序集成环境或Eclipse程序集成环境。 五、实验步骤 1、输入源程序; 2、利用相关工具(Eclipse运行本程序); 3、查看实验结果,通过分析结果来掌握继承和多态的特征。 六、测试数据 略 七、源代码 14.3题:Square类:

public class Square extends GeometricObject implements Colorable { private double length; public Square(double length){ super(); this.length=length; } public Square(double length,String color){ super(color,true); this.length=length; } public void howToColor() { // TODO Auto-generated method stub System.out.println("Color all four sides"); } public void xx(){} @Override public double getArea() { // TODO Auto-generated method stub return length*length; } @Override public double getPerimeter() { // TODO Auto-generated method stub return 4*length; } } Square测试类: public class TestSquare { public static void main(String[] args) { // TODO Auto-generated method stub GeometricObject objects[] = new GeometricObject[5]; objects[0] = new Square(1); objects[1] = new Square(1.5, "red"); objects[2] = new Square(2.5); objects[3] = new Square(3.0, "black"); objects[4] = new Square(5); for (int i = 0; i < 5; i++) { System.out.println("第" + i + "对象:");

Student实验7:Java抽象类的实现与运用

实验7:Java抽象类的实现与运用 一、实验目的 (1)掌握抽象类的概念及使用。 (2)掌握接口的概念和实现方式。 (3)理解接口和抽象类的区别。 二、实验设备要求 JDK 6.0、JCreator和NetBeans 6.9 三、实验内容 1. 假定要为某个公司编写雇员工资支付程序,这个公司有各种类型的雇员(Employee),不同类型的雇员按不同的方式支付工资: (1)经理(Manager)——每月获得一份固定的工资 (2)销售人员(Salesman)——在基本工资的基础上每月还有销售提成。(3)一般工人(Worker)——则按他每月工作的天数计算工资。 根据上述要求试用类的继承和相关机制描述这些功能,并编写一个Java Application程序,演示这些类的用法。(提示:应设计一个雇员类(Employee)描述所有雇员的共图特性,这个类应该提供一个计算工资的抽象方法ComputeSalary( ),使得可以通过这个类计算所有雇员的工资。经理、销售人员和一般工人对应的类都应该继承这个类,并重新定义计算工资的方法,进而给出它的具体实现。) 编程思路: 1.各种类型的雇员类定义为抽象类,该类中包含员工姓名、构造方法和返回员工姓名的方法以及抽象方法工资支付方式; 2.子类Manager:自己的构造方法和实现父类中的工资支付方式这个抽象方法;

3.子类Salesman:自己的构造方法和实现父类中的工资支付方式这个抽象方法; 4.子类Worker:自己的构造方法和实现父类中的工资支付方式这个抽象方法; 5.测试类EmployeeDemo:main方法 运行结果: 经理Tom的月工资为:10000.0 销售人员Mary的月工资为:4700.0 工人John的月工资为:1680.0

实验七 练习抽象类与接口的编程

实验七练习抽象类与接口的编程 实验目的: 1、练习抽象类和接口的使用 2、练习类的多态性编程 实验内容: 一、开发教师类,其中教师分为Java教师以及.NET教师,各自的要求如下: Java教师: 属性:姓名、所属教研室 方法:授课giveLession(步骤:打开Eclipse、知识点讲解,总结提问)、自我介绍introduce .NET教师 属性:姓名、所属教研室 方法:授课(步骤:打开Visual studio 2005、知识点讲解,总结提问)、自我介绍 在教师类的基础上,开发一个类代表督导部门,负责对各教师进行评估judge,评估内容包括:1)教师的自我介绍;2)教师的授课;要求该类具有可扩展性。注:多态性编程 二、利用多态性编程,实现求三角形、正方形和圆形面积。方法:抽象出一个共享父类,定义一函数为求面积的公共界面,再重新定义各形状的求面积函数。在主类中创建不同类的对象,并求得不同形状的面积。 三、使用抽象类和多态性编写程序解决问题。 1)定义一个抽象类Animal,其中包括属性name,相关构造方法,抽象方法enjoy()表示动物高兴时动作。 2)定义Cat类继承于Animal类,其中包括属性eyesColor,相关构造方法,同时具体化父类中的抽象方法。 3)定义Dog类继承于Animal类,其中包括属性furColor,相关构造方法,同时具体化父类中的抽象方法。 4)定义Lady类,其中包括属性name,以及Animal 类型的属性pet表示女士所养的宠物,定义构造方法,生成女士对象时初始化姓名和她所养的宠物。定义一个方法:myPetEnjoy 表示此女士的宠物在高兴时的动作。提示:对于此类的定义中需要使用到多态性。 5)定义测试类。 四、编写一个Car类,编写一个Tank类,编写一个Plane类,编写一个Fighter类,Car类和Plane类都有一个move方法。要求Tank具有Car类的特征,Fighter类具有Plane类的特征,并且要求Tank类和Fighter类都具有攻击的行为方法。根据要求实现此系统。 五、接口与多态性 1)定义一个接口Sortalbe,包括一个抽象方法int compare( Sortable s),表示需要进行比较大小,返回大于0则表示大于。 2)定义一个类Student,要求实现此接口,必须重写接口中的抽象方法。Student类中包括score 属性,重写public String toString()方法,在比较大小时按照成绩的高低比较。

相关文档
相关文档 最新文档