实验五 包、接口 抽象类
【开发语言及实现平台或实验环境】
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
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说教育文库java实验指导书(5)在线全文阅读。
相关推荐: