实验七 抽象类、包与接口

合集下载

实验-抽象类和接口

实验-抽象类和接口

实验-抽象类和接⼝学⽣实验报告课程:实验指导教师:系别:班级:实验⽇期:年⽉⽇实验地点:姓名:学号:⼀、实验名称:抽象类和接⼝实验概述:【实验⽬的及要求】1 ⼦类的继承性2⼦类对象的创建过程3成员变量的继承和隐藏4⽅法的继承和重写【实验环境】(使⽤的软件)Eclipse实验内容:【实验过程】(实验步骤、记录、数据、分析)实验内容:⼀、有⼀个abstract类,类名为Employee。

Employee的⼦类有YearWorker,MonthWorker 和WeekWorker。

YearWorker对象按年领取薪⽔,MonthWorker对象按⽉领取薪⽔,WeekWorker对象按周领取薪⽔。

Employee类有⼀个抽象⽅法:public abstract double earnings( );⼦类必须重写⽗类的earnings⽅法,给出各⾃领取报酬的具体⽅式。

有⼀个Company类,该类⽤employee数组作为成员,employee数组的成员可以是YearWorker对象的上转型对象、MonthWorker对象的上转型对象或WeekWorker对象的上转型对象。

程序能够输出Company对象⼀年需要⽀付的薪⽔总额。

程序模板按模板要求,将【代码1】~【代码4】替换为Java程序代码。

HardWork.javaabstract class Employee{public abstract double earnings( );}class YearWorker extends Employee{【代码1】// 重写earnings( )⽅法}class MonthWorker extends Employee{【代码2】// 重写earnings( )⽅法}class WeekWorker extends Employee{【代码3】// 重写earnings( )⽅法}class Company{Employee[ ] employee;double salaries=0;Company(Employee[ ] employee){this.employee=employee;}public double salariesPay( ){salaries=0;【代码4】// 计算salariesreturn salaries;}}public class HardWork{public static void main(String args[ ]){Employee[ ] employee=new Employee[20]; for(int i=0;i{if(i%3==0)employee[i]=new WeekWorker( );else if(i%3==1)employee[i]=new MonthWorker( );else if(i%3==2)employee[i]=new YearWorker( );}Company company=new Company(employee);System.out.println("公司年⼯资总额:"+company.salariesPay( ) );}}问题:1、⼦类YearWorker如果不重写⽗类的earnings( )⽅法,程序编译时会提⽰怎样的错误?⼆、有⼀个ComputeTotalSales接⼝,该接⼝中有⼀个⽅法:public double totalSalesByYear( );有三个实现该接⼝的类:Television、Computer和Mobile。

Java中抽象类与接口的比较

Java中抽象类与接口的比较
的 抽 象 。比 如 我 们 要 开 发 一 个 管 理 乐
能被实例化 的 ,更重要 的是接 口中的 方法都是抽 象的 ,这 些方法 要到实现
器的软 件 ,会发现 问题 领域 存在着笛 这个接 口的类中去实现 。接 口的本 质 子 、古筝等一些具体概 念 ,它们是不 是在 ca ss lse 之间建立起一个协议 ,它 同的 ,但都属于乐 器,这里的乐器就
抽象类 和接 口都 位于继 承树的 上
层 ,它 们 具 有 以 下 相 同 点 :
ml me t a i{ 系 ,接 口的 多继 承性正好 可以解决这 i pe ns R do
v i i (l ・; od wr e)l: t _
1)都代表 系统 的抽 象 层。 2)都 不能 被实 例化 。
p bi Sr g wh t){ u l t n a( c i
rt n e ur ‘ ns r ‘ t um e ”I I nt
} }
我们知 道 ,类可 以被 实例化生成 法都是抽 象的 ,没有 涉及特殊 手机的 多个 对象来使用 ,但 抽象类不能被实 任何细节 ,也没有涉 及这些操 作的具
现 ,因为每 一种 乐器的演奏和调节 方
l 1什么是抽象类 ,
的 两种 机制 ,二者有很 大的相似性 ,艾存 在
本质 的 区别 。本文 从抽 象类和接 1 3的重要性
在面 向对象的概念 中 ,所有的对 式都是不 同的 ,所以这些方法 的实现
出发,分别介 绍 了它们的概 念 ,并 分析得 出
v i eev Ra i(; od rc ie do )

3 )定义类 Ra iP n继承 P n并 do e e
c as R a o n e e l s di Pe xt nds Pe n

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方法返回两个对象中较大的一个。

C#中抽象类与接口的分析与比较

C#中抽象类与接口的分析与比较



l l ∞ W r i t e L i n e (“ 食 肉动物 只吃 肉!”) ; }
C t a ss n 0 、 h r ( “ j s : 槲 ㈨㈣ j
{p u b l i c O V e ) ‘ r i d e w) i d F o o d H a b i t s 0
成员都 隐式地 具有p u b l i c 访 问权限 。类 可 以从单个类继承但 可以实现多 个接 口,实现接 口的类 需要实现接 口的所 有成员 。接 口可以从现有接 口 中继承 ,一个实现接 口的类也实现它 的继承接 口的基类接 口。 虽然 不能创建接 口对象 ,但 可 以声明接 口变量 ,接 口变量必须指 向 个实现 了接 口的类的对象 。如下例 中的T y p e U s e [ ] t = n e w T y p e U s e[ 4 ] : 声 明了一个接 口类型 的数组 ,它包含4 个接 口类 型的变 量。以下语句 声明 了类 的对 象,并实例化 ,接 口变量 ( 接 口数组元素 )指 向类 的对 象。 [ e I I C  ̄ , e、t e a l=n e w r (“ 李静 ”,3 O , “ 语文 ”) :
基类 ,抽象类不 能实例 化 ,必须在继承 中实现 。抽 象类 中可 以包含非抽 口。一个接 口定义一个协定 ,实现接 口的类或 结构必须遵守其 协定 。接 象成 员。抽象类 的 目的是提供一个合 适的基类 ,以派生 其他的类 。使 用 口可 以从 多个 基接 口继承 ,而类或结构可 以实现多个接 口中。接 口声 明 抽 象类的好处之 一是,当要求组 建新 版本时 ,可根据 需要将附加方法 添 可 以声 明零个 或多个成 员,接 口的成员必须 是方法、属性 、事件或索 引 加到基类 。如 下例 : 器 。接 口不 以包 含常数 、字段 、运算符 、实例 构造函数 、析构 函数或类 抽象类应用实例: 型 ,也不 能包 含任何种类 的静态成员 。接 口本 身不提供它所 定义的成员 a b s t I I a cI Cl a s s r l r i j 1 j 的实现 ,接 口只指定实现 该接 口的类或接 口必须提供 的成 员。所有接 口

Java的抽象和接口实验报告

Java的抽象和接口实验报告

本文由我司收集整编,推荐下载,如有疑问,请与我司联系Java 的抽象和接口实验报告2016/09/09 1860 1、掌握抽象类和抽象方法的使用。

2、熟悉类中接口的定义和实现。

1、定义一个抽象类Shape,它包含一个抽象方法getArea(),从Shape 类派生出Rectangle 和Circle 类,这两个类都用getArea()方法计算对象的面积。

编写应用程序使用Rectangle 和Circle 类。

实验要求:定义Rectangle 和Circle 类的构造方法,初始化成员变量。

2、学校中有老师和学生两类人,而在职研究生既是老师又是学生。

(1)设计两个信息管理接口StudentInterface 和TeacherInterface,其中StudentInterface 接口包括setFee()方法和getFee()方法,分别用于设置和获取学生的学费,TeacherInterface 接口包括setPay()和getPay()方法,分别用于设置和获取老师的工资。

(2)定义一个研究生类Graduate,实现StudentInterface 接口和TeacherInterface 接口,它定义的成员变量有name(姓名),sex(性别),age(年龄),fee(每学期学费)pay(月工资)。

(3)创建一个姓名为“zhangsan”的研究生,统计他的年收入和学费,如果收入减去学费不足2000 元,则输出“You need a loan!”(需要贷款)的信息,否则输出“You income is enough!”信息。

实验要求:在Graduate 中实现各个接口声明的抽象方法。

四、实验结果(本实验源程序清单及运行结果或实验结论、实验设计图)第一题:package firsrpakeage;public class Test01 {public static void main(String[] args) {。

JAVA包接口与抽象类

JAVA包接口与抽象类

JA V A包、接口与抽象类【概述】包(Package)定义了软件单元,它能够独立发布,并能够与其它包组成应用程序,包的成员是一些相关联的类、接口,也可包含包中的类所使用的附加资源文件。

在Java程序的第一行代码,可以通过以下代码来申明源程序中所创建类型的包。

package 包名;如果某个Java程序源代码中没有上面的package 包名;那么这个源代码中定义的所有类型都属于一个默认包(default package)。

【包的主要作用】1.包将相互关联的接口和类结合成组。

2.包创建了命名空间来避免类型之间的命名冲突。

在一个包中的接口和类可以使用流行的公共名字来命名,而这些命名只在一个包内才有意义,在不同的包之间则可以有相同的命名。

3.包机制为开发应用提供了保护域。

包内的代码通过访问标志可以相互协作,而这些标志对外部代码是不可用的【包的命名约定】♦如果包名为c,那么相应的编译出的.class文件必须位于某个工作目录下的aaa\bbb\ccc目录里面或者某个Jar文件的aaa\bbb\ccc目录里面。

♦可以采用Internet域名反序,比如,可以将包命名为.zucc; 虽然这种命名模式使得包名变得很长,但却不容易重名。

【执行包中的类文件】对于包c中定义的某个类A,那么类文件A.class必定位于(1)工作目录下的aaa\bbb\ccc目录里面,或者(2)某个Jar文件中的aaa\bbb\ccc目录里面。

对于前一种情况,可以在命令提示符下,敲入java –cp 工作目录c.A 执行类A。

比如,如果工作目录是d:\test,那么可以键入java –cp d:\test c.A执行类A;如果命令提示符当前目录就是工作目录d:\test, 那么可以省去-cp d:\test, 而仅仅需要键入java c.A对于后一种情况,可以在命令提示符下,敲入下面命令可以执行类A;java –cp jar文件的路径文件名c.A比如,类文件A.class位于已经打包的jar文件abc.jar中,而abc.jar位于目录d:\test, 那么就可以键入如下命令来执行A.classjava –cp d:\test\abc.jar c.A【使用包成员(导入类型方式)】对于其它包中定义的类型,可以程序中使用类型的完全限定名(Fully qualified name, 即包名.类型名)来申明和使用类型;如果不想在程序中使用完全限定名(因为完全限定名比较长),而是希望通过简单的类型名来申明和使用其它包中的类型,那么可以通过import 语句将程序中使用到的类型(一般位于其它包)导入到当前程序中。

3第三章:抽象类、接口和包

3第三章:抽象类、接口和包
} @Override public double area() {
return this.width*this.height; } }
《JAVA程序设计》课程
3.1 抽象类
③定义继承Shape的子类圆形类Circle
public class Circle extends Shape { //定义私有的实例变量r,表示圆的半径 private double r; //定义一个参数的构造方法 public Circle(double r){ this.r=r; }
public class Dog extends Animal { public Dog(String n) { super(n); } @Override
《JAVA程序设计》课程
3.1 抽象类
public void eat(){ //实现抽象类的抽象方法 System.out.println(name + "啃骨头");
《JAVA程序设计》课程
3.1 抽象类
//定义抽象类Shape public abstract class Shape {
public abstract double area();//抽象方法 }
②定义继承Shape的子类矩形类Rectangle public class Rectangle extends Shape {
} } (3)定义第二个子类Cat,继承自Animal,并实现Animal类中的抽象方法,代码如下:
public class Cat extends Animal { public Cat(String n) { super(n); }
《JAVA程序设计》课程
3.1 抽象类
@Override public void eat() { System.out.println(name + "吃鱼"); }

什么是抽象类什么是接口两者有什么区别?如何使用它

什么是抽象类什么是接口两者有什么区别?如何使用它

什么是抽象类什么是接⼝两者有什么区别?如何使⽤它⼀、抽象类:抽象类是特殊的类,只是不能被实例化;除此以外,具有类的其他特性;重要的是抽象类可以包括抽象⽅法,这是普通类所不能的。

抽象⽅法只能声明于抽象类中,且不包含任何实现,派⽣类必须覆盖它们。

另外,抽象类可以派⽣⾃⼀个抽象类,可以覆盖基类的抽象⽅法也可以不覆盖,如果不覆盖,则其派⽣类必须覆盖它们。

⼆、接⼝:接⼝是引⽤类型的,类似于类,和抽象类的相似之处有三点:1、不能实例化;2、包含未实现的⽅法声明;3、派⽣类必须实现未实现的⽅法,抽象类是抽象⽅法,接⼝则是所有成员(不仅是⽅法包括其他成员);另外,接⼝有如下特性:接⼝除了可以包含⽅法之外,还可以包含属性、索引器、事件,⽽且这些成员都被定义为公有的。

除此之外,不能包含任何其他的成员,例如:常量、域、构造函数、析构函数、静态成员。

⼀个类可以直接继承多个接⼝,但只能直接继承⼀个类(包括抽象类)。

三、抽象类和接⼝的区别:1.类是对对象的抽象,可以把抽象类理解为把类当作对象,抽象成的类叫做抽象类.⽽接⼝只是⼀个⾏为的规范或规定,微软的⾃定义接⼝总是后带able字段,证明其是表述⼀类类“我能做。

”.抽象类更多的是定义在⼀系列紧密相关的类间,⽽接⼝⼤多数是关系疏松但都实现某⼀功能的类中.2.接⼝基本上不具备继承的任何具体特点,它仅仅承诺了能够调⽤的⽅法;3.⼀个类⼀次可以实现若⼲个接⼝,但是只能扩展⼀个⽗类4.接⼝可以⽤于⽀持回调,⽽继承并不具备这个特点.5.抽象类不能被密封。

6.抽象类实现的具体⽅法默认为虚的,但实现接⼝的类中的接⼝⽅法却默认为⾮虚的,当然您也可以声明为虚的.7.(接⼝)与⾮抽象类类似,抽象类也必须为在该类的基类列表中列出的接⼝的所有成员提供它⾃⼰的实现。

但是,允许抽象类将接⼝⽅法映射到抽象⽅法上。

8.抽象类实现了oop中的⼀个原则,把可变的与不可变的分离。

抽象类和接⼝就是定义为不可变的,⽽把可变的座位⼦类去实现。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验七抽象类、接口与包
一、实验目的
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.练习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)。

三、思考题
1.定义一个矩形类Rectangle,再定义接口InterfaceRec,其中包含方法getArea ();由矩形类派生出一个正方形类,自行扩充成员变量和方法,并实现此接口InterfaceRec中的方法。

2. 内部类inner class和外部类的区别?
3.抽象类和接口的区别?。

相关文档
最新文档