java实验指导书(5)

2019-08-31 19:29

实验五 包、接口 抽象类

【开发语言及实现平台或实验环境】

Windows2000 或XP,JDK1.6与Eclipse 【实验目的】

1. 理解抽象类和接口概念

2. 掌握接口、抽象类的设计方法。

3. 理解和掌握接口的实现和通过接口访问方法

【实验要求】

1. 理解和掌握抽象类的定义与作用。

2. 掌握使用系统接口的技术和创建自定义接口的方法。

【实验内容】

一.抽象类往往用来表征我们在对问题领域进行分析、设计中得出的抽象概念,是对一系列看上去不同,但是本质上相同的具体概念的抽象。如果我们要开发一个作图软件包,就会发现问题领域存在着点、线、三角形和圆等这样一些具体概念,它们是不同的,但是它们又都属于形状这样一个概念,形状这个概念在问题领域是不存在的,它就是一个抽象概念。

1.抽象方法 抽象方法的声明格式如下:abstract returnType abstractMethodName([paramlist]); 抽象方法只能出现在抽象类中。如果一个类中含有抽象方法,那么该类也必须声明为抽象的,否则在编译时编译器会报错

2. 抽象类

定义一个抽象类需要关键字abstract,其基本格式如下:

abstract class ClassName{

...

}

抽象类不能被实例化,在程序中如果试图创建一个抽象类的对象,编译时Java编译器会提示出错。

二.static 声明的成员变量/方法被视为类的成员变量/方法,而不把它当作实例对象的成员变量/方法。换句话说,静态变量/方法是类固有的,可以直接引用,其它成员变量/方法仅仅被声明,生成实例对象后才存在,才可以被引用

1.写出程序运行结果

public class StaticDemo {

public static int getX() { }

return x; static int x; int y; static { }

x = 10;

20

public static void setX(int newX) { }

public int getY() { }

public void setY(int newY) { }

public static void main() {

System.out.println(\静态变量x=\ + StaticDemo.getX());

// System.out.println(\实例变量y=\非法,编y = newY; return y; x = newX;

译出错 StaticDemo a = new StaticDemo();

StaticDemo b = new StaticDemo(); a.setX(1); a.setY(2); b.setX(3); b.setY(4);

System.out.println(\静态变量a.x=\ + a.getX()); System.out.println(\实例变量a.y=\ + a.getY()); System.out.println(\静态变量b.x=\ + b.getX());

System.out.println(\实例变量b.y=\ + b.getY()); } }

静态变量x=10 静态变量a.x=3 实例变量a.y=2 静态变量b.x=3 实例变量b.y=4

三.final

final可以修饰的对象:1)final 域//值是固定;2)final 方法//该方法不能被子类覆盖;3)final 类//该类不能派生子类

四.接口的定义与作用

接口可以看作是没有实现的方法和常量的集合。接口与抽象类相似,接口中的方法只是做了声明,而没有定义任何具体的操作方法。使用接口是为了解决Java 语言中不支持多重继承的问题。

(1)定义一个接口Shape2D,利用它来实现二维的几何形状类Circle和Rectangle 面积计算编写实现接口的程序文件

21

(2)源代码:。

interface Shape2D{ //定义Shape2D接口

final double pi=3.14; //数据成员一定要初始化

public abstract double area(); //抽象方法,不需要定义处理方式 }

class Circle implements Shape2D{ double radius;

public Circle(double r){ //构造方法 radius=r; }

public double area(){ return (pi * radius * radius); } }

class Rectangle implements Shape2D{ int width,height;

public Rectangle(int w,int h){ //构造方法 width=w; height=h; }

public double area(){ return (width * height); } }

public class InterfaceTester {

public static void main(String args[]){ Rectangle rect=new Rectangle(5,6); System.out.println(\ Circle cir=new Circle(2.0); System.out.println(\ } }

【完成实验项目】

1.定义一个抽象基类Shape,它包含三个抽象方法center()、diameter()、getArea(),从Shape类派生出Square和Circle类,这两个类都用center()计算对象的中心坐标,diameter()计算对象的外界圆直径,getArea()方法计算对象的面积。编写编写应用程序使用Rectangle类和Circle类。

2.定义一个接口Insurance,接口中有四个抽象方法:public int getPolicyNumber()//保险号码;public int getCoverageAmount()//保险金额;public double calculatePremium()//计算费用;public Date getExpiryDate()//终止日期。设计一个类Car,该类实现接口的方法,编写应用程序。

22

实验六 Java中的Object、Math和System类

【开发语言及实现平台或实验环境】

Windows2000 或XP,JDK1.6与Eclipse 【实验目的】

1. 熟悉Object类、基本类型的包装类 2. Math类,System类

【实验要求】

1. 掌握基本数据类型与包装类的转化。

2. 了解Object类、Math类,System类常用方法与作用。 【实验内容】

一.类Object

类java.lang.Object处于Java开发环境的类层次的根部,其他所有的类都是直接或间接地继承了此类。Object类定义了一些最基本的状态和行为。一些常用的方法有:

equals() :比较两个对象(引用)是否相同。

getClass():返回对象运行时所对应的类的表示,从而可得到相应的信息。 toString():用来返回对象的字符串描述。 finalize():用于在垃圾收集前清除对象。

notify(),notifyAll(),wait():用于多线程处理中的同步 二.Math类 1. Java中的Math类属于java.lang包中,Math的所有方法均用static声明的静态方法,所以使用该类中的方法时,可以直接使用类名.方法名,如:Math.sin);Math类包含用于执行基本数学运算的方法,如初等指数、对数、平方根和三角函数。

bs(arg) : 返回arg绝对值,arg可以是:int,long,float,double. ceil(double arg) :返回>=arg的最小整数. floor(double arg) : 返回<=arg最大整数. max(x,y) :返回x和y中的最大值. min(x,y) : 返回x和y中的最小值.

四舍五入: rint(double arg) : 返回最接近arg的整数值. 返回double import java.util.*; class TestMath {

public static void main(String args[]) {

Random r1=new Random(1234567890L); Random r2=new Random(1234567890L); boolean b=r1.nextBoolean(); // 随机数不为 0 时取真值

int i1=r1.nextInt(100); // 产生大于等于 0 小于 100 的随机数 int i2=r2.nextInt(100); // 同上

double i3=r1.nextDouble(); // 产生大于等于 0.0 小于 1.0 的随机数 double i4=r2.nextDouble(); // 同上

double d1=Math.sin(Math.toRadians(30.0));

double d2=Math.log(Math.E); double d3=Math.pow(2.0, 3.0); int r=Math.round(33.6F);

System.out.println(\的随机数不0时 \ System.out.println(\的随机数为 \

23

System.out.println(\的随机数为 \ System.out.println(\的随机数为 \ System.out.println(\的随机数为 \

System.out.println(\弧度的正弦值:Math.sin(Math.toRadians(30.0))=\ System.out.println(\的对数值:Math.log(Math.E)= \System.out.println(\的 3 次方:Math.pow(2.0, 3.0)= \

System.out.println(\四舍五入:Math.round(33.6F)= \使用

} }

三.System类是一个特殊类,它是一个公共最终类,不能被继承,也不能被实例化。 System类包含三个使用频繁的公共数据流,分别是:标准输入(in)、标准输出(out)、标准错误输出(err)。

① public static final InputStream in--------标准输入。这个属性是InputStream类的一个对象,它是未经包装的原始Input Stream,读取System.in之前应该先加以包装。可以通过read()方法读取字节数据。

② public static final PrintStream out--------标准输出。 ③ public static final PrintStream err---------标准输出。 System类的常用方法 (1)获取当前时间

使用currentTineMillis( )可以记录程序执行的时间,返回自从午夜起到现在的时间,时间单位是毫秒。如果要记录程序中一段有问题程序的运行时间,可以在这段程序开始之前调用currentTineMillis( )方法存储当前时间,在这段程序结束处再次调用currentTineMillis( )方法。

四、基本类型的包装类

Java语言是一个面向对象的语言,但是Java中的基本数据类型却是不面向对象的,这在实际使用时存在很多的不便,为了解决这个不足,在设计类时为每个基本数据类型设计了一个对应的类,这样八个和基本数据类型对应的类统称为包装类(Wrapper Class),

包装类位于java.lang包,包装类和基本数据类型的对应关系如下表所示: 基本数据包装byte Byte boolean Booleshort Short char Charaint Integlong Long float Float double Doubl 在这八个类名中,除了Integer和Character类以后,其它六个类的类名和基本数据类型一直,只是类名的第一个字母大写即可。

对于包装类说,这些类的用途主要包含两种:

a、作为和基本数据类型对应的类类型存在,方便涉及到对象的操作。

b、包含每种基本数据类型的相关属性如最大值、最小值等,以及相关的操作方法。 由于八个包装类的使用比较类似,下面以最常用的Integer类为例子介绍包装类的实际使用。

1、实现int和Integer类之间的转换

24


java实验指导书(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:第七单元生字词练习

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: