java实验指导书(4)

2019-08-31 19:29

实验四 类的继承性和多态性

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

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

1. 理解和掌握类的继承和多态 2. 理解父类和子类的转化。 【实验要求】

1. 掌握类的继承法和多态 。 2. 掌握父类和子类的转化。

【实验内容】

一 类的继承

面向对象的中最为强大的功能是类的继承,继承允许你在一个已经存在的类之上编写新的程序。比如想建立一个FillRect类,该类可以使用Rectangle类中所有已定义的数据和成员方法,如:width、height等数据和getArea等方法,就可以通过继承来实现。为了继承Rectangle类,你必须引用旧的Rectangle类(使用extends关键字),并且在新类的说明中引用它。如:

class FillRect extends Rectangle{

? }

1. VehicleDemo.java

//类的继承

class Vehicle{//车辆类

int VehicleID; //性质:车辆的ID号 void setID(int ID){ VehicleID=ID; }

void displayID( ) { //方法:显示ID号

System.out.println(\车辆的号码是:\ } }

class Car extends Vehicle{ //轿车类 int mph; //时速 void setMph(int mph){ this.mph=mph; }

void displayMph( ) { //显示轿车的时速

System.out.println(\轿车的时速是:\ } }

public class VehicleDemo{

public static void main(String[] args){ //产生一个车辆对象

15

Car benz = new Car(); benz.setID(9527); benz.setMph(10); benz.displayID(); benz.displayMph(); }

}

2. 成员变量的隐藏和方法的重写

子类通过隐藏父类的成员变量和重写父类的方法,可以把父类的状态和行为改变为自身的状态和行为,例如:

class A{ int x;

void setX(){ x=0; } }

class B extends A{

int x; //隐藏了父类的变量x

void setX(){ //重写了父类的方法 setX()

x=5; } }

3. 关键字super、

Java中通过super来实现对父类成员的访问,super用来引用当前对象的父类。在扩展类的所有非静态方法中均可使用super关键字。在访问字段和调用方法时,super将当前对象作为其超类的一个实例加以引用。

super 的使用有三种情况: 访问父类被隐藏的成员变量,如:super.variable; 调用父类中被重写的方法,如:super.method([paramlist]); 调用父类的构建器,如:super([paramlist]); SuperDemo.java

class Father{ int x; Father(){ x=3;

System.out.println(\ }

void doSomething(){

System.out.println(\ } }

16

class Son extends Father{ int x; Son(){

//调用父类的构造方法

//super() 必须放在方法中的第一句 super(); x=5;

System.out.println(\ }

void doSomething() {

super.doSomething( ); //调用父类的方法

System.out.println(\ System.out.println(\ } }

public class SuperDemo{

public static void main(String args[]) { Son son=new Son(); son.doSomething(); } }

程序运行结果:

Calling Father : x=3 Calling Son : x=5

Calling Father.doSomething() Calling Son.doSomething() Father.x=3 Son.x=5

二 类的多态性

(1) 编译时多态。在编译阶段,编译器会根据参数的不同来静态确定调用相应的方法,即具体调用哪个被重载的方法。

(2) 运行时多态。由于子类继承了父类所有的属性(私有的除外),所以子类对象可以作为父类对象使用。程序中凡是使用父类对象的地方,都可以用子类对象来代替。一个对象可以通过引用子类的实例来调用子类的方法。

√重载方法的调用原则:Java运行时系统根据调用该方法的实例,来决定调用哪个方法。对子类的一个实例,如果子类重写了父类的方法,则运行时系统调用子类的方法;如果子类继承了父类的方法(未重写),则运行时系统调用父类的方法。 1. SuberClass.java

class BaseClass{ public BaseClass(){

System.out.println(\ init(); }

public void init(){

17

System.out.println(\ } }

public class SuberClass extends BaseClass{ public SuberClass() {

System.out.println(\ }

public void init() {

System.out.println(\ }

public static void main(String[] args) { System.out.println(\创建BaseClass对象:\ new BaseClass();

System.out.println(\创建SuberClass对象:\ new SuberClass(); } }

程序运行结果:

创建BaseClass对象: Now in BaseClass() Now in BaseClass.init() 创建SuberClass对象: Now in BaseClass() Now in SuberClass.init() Now in SuberClass()

三.static 有时候,可能需要同类的各对象之间共享某些变量或者方法,这些共享的变量或是方法被称为类变量或者类方法。类变量或者类方法统称为静态对象。

√每个实例对象对类变量的改变都会影响到其他的实例对象。类变量可通过类名直接访问,无需先生成一个实例对象,也可以通过实例对象访问类变量。 √类方法不能访问实例变量,只能访问类变量。类方法可以由类名直接调用,也可由实例对象进行调用。类方法中不能使用this或super关键字。 √静态变量可以有初值,就象实例变量一样。静态变量和方法都是通过类名字来访问的。为方便起见,也可以用具体对象来访问。 例3.3.2 StaticDemo2.java

//静态成员的使用 class StaticDemo2{ //实例变量 int i; //静态变量 static int j;

static int arr[ ] = new int[12]; //静态初始成员,初始化数组

18

static{

for(int i=0;i

//实例方法

void setI(int i){ this.i =i; }

//静态方法

static void setJ(int j) { StaticDemo2.j=j; }

public static void main(String []args ){ StaticDemo2 sd2 = new StaticDemo2(); StaticDemo2.j=2; //正确: 通过类访问静态变量 sd2.j =3; //正确: 通过实例访问静态变量 StaticDemo2.setJ(2); //正确: 通过类访问静态方法 sd2.setJ(3); //正确: 通过实例访问静态方法 sd2.i=4; //正确: 通过实例访问实例变量 sd2.setI(7); //正确: 通过实例访问实例方法 StaticDemo2.i=5; //错误: 通过类访问实例变量 StaticDemo2.setI(5); //错误: 通过类访问实例方法 } }

【完成实验项目】

1.三角形、梯形和圆形的类封装

? 实验要求:

编写一个Java应用程序,该程序中有3个类:Trangle、Leder和Circle,分别用来刻画“三角形”、“梯形”和“圆形”。具体要求如下:

a) Trangle类具有类型为double的三个边,以及周长、面积属性,Trangle类具有返回周长、面积以及修改三个边的功能。另外,Trangle类还具有一个boolean型的属性,该属性用来判断三个属能否构成一个三角形。

b) Lader类具有类型double的上底、下底、高、面积属性,具有返回面积的功能。

c) Circle类具有类型为double的半径、周长和面积属性,具有返回周长、面积的功能。

2. 假如我们在开发一个系统时需要对员工进行建模,员工包含3个属性:姓名、工号

以及工资。经理也是员工,除了含有员工的属性外,另外还有一个奖金属性。请使用继承的思想设计出员工类和经理类。要求类中提供必要的方法进行属性访问。 3.

19


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

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

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

马上注册会员

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