2016级java语言实验3指导(面向对象程序设计(继承、封装、多态)) 联系客服

发布时间 : 星期二 文章2016级java语言实验3指导(面向对象程序设计(继承、封装、多态))更新完毕开始阅读475f978e2f3f5727a5e9856a561252d381eb207d

上机实验三:面向对象程序设计(继承、封装、多态)

类是面向对象程序设计的基础,是Java的核心和本质所在,在Java中,所有的语言元素都封装在类中。编写java程序的过程就是从现实世界中抽象出java可实现的类,并用合适的语句定义它们的过程,本节将学习类的应用,以及如何创建类的实例,通过类的继承更有效的组织程序结构,明确类之间的关系。掌握本节所讲的内容后,读者就可以使用面向对象技术编写java程序了。

接口是特殊的抽象类,只包含常量和方法的定义,而没有方法的实现,也就是说接口是方法定义和常量值的集合。

包是Java语言中有效管理类的一个机制。通过关键字package声明包语句,package语句作为Java源文件的第一条语句,指明该源文件定义的类所在的包。使用import语句可以引入包中的类。

一、实验目的

1) 2) 3) 4) 5) 6) 7)

掌握类的定义和使用 掌握对象的声明和使用

了解构造函数的概念和使用 掌握类的继承关系和派生方法 掌握多态的概念与使用 掌握接口的定义和使用 掌握Java中包的应用

二、实验内容

1) 2) 3) 4) 5) 6) 7)

类的声明

定义类成员变量以及成员方法

实例化类、创建类对象以及类方法的调用 类的继承

通过实例理解接口的定义 通过实例熟悉接口的应用

正确应用Java中包和import语句

三、实验步骤

1) 类和类的实例化

一个类的实现包括两部分:类声明和类体。 (1)、类声明

[public][abstract][final] class className [extends superclassName] [implements interfaceNameList] {……}

期中修饰符[public][abstract][final]说明类的属性 className为类名

superclassName为父类的名字

interfaceNameList为类实现的接口列表 (2)、类体 类体定义如下 class className {

[public|protected|private] [static] [final] [transient] [volatile] Type variableName; //成员变量

[public|protected|private] [static] [final] [abstract] [native] [synchronized] returnType methondName ( [paramList] ) [throws exceptionList] {statements} //成员方法 }

(3)、成员变量

成员变量的声明方式如下

[public|protected|private] [static] [final] [transient] [volatile] Type variableName; //成员变量

其中:[public|protected|private] → 可见性 [static] → 静态变量(类变量),相当于实例变量

[final] → 常量

[transient] → 暂时性变量,用于对象存档 [volatile] →变量,用于共发线程的共享 (4)、成员方法

[public|protected|private] [static] [final] [abstract] [native] [synchronized] returnType methondName ( [paramList] ) [throws exceptionList]//方法体的声明 {statements} //方法体

其中:[public|protected|private] →可见性

[static] →静态方法,也叫类方法,可以通过类名直接调用 [final] →方法不能被重写

[abstract] → 抽象方法,没有方法体(体现多态时常用) [native] →集成其他语言的代码

[synchronized] →控制多个并发线程的访问

例子3-1请根据注释填写语句,并上机调试成功

根据注释添加语句,并调试和修改程序,使其能够执行。

--------------------------------------------------------------------------------------------------------------------- class Retangle {

public Retangle(double l, double w) { length = l; width = w;}

public double calcPerimeter() //返回周长

{ (1) } public double calcArea() //返回面积

{ (2) }

public void Show() //显示矩形的长和宽

{ (3) } protected double length; protected double width; }

class Square extends Retangle {

public Square(double side) //调用父类的构造方法 { (4) } public double calcPerimeter() { return width * 4; } public void Show() {

System.out.println( “边长为” + width + “的正方形”); } }

public class Test{

public static void main(String args[]){

Square sq1=new Square(2.0);

sq1.Show();

System.out.println(\正方形的边长为\ } (1) return (width+length)*2; } (2) return width*length; (3) System.out.print(\; ----------------------------------------------------------------------------------------------------------------- (4)填写的语句是: super(side,side);

class Retangle { public Retangle(double l, double w) { length = l; width = w;}

public double calcPerimeter() //返回周长

{ return (width+length)*2; } public double calcArea() //返回面积

{ return width*length; }

public void Show() //显示矩形的长和宽

{ System.out.print(\+length+\+\+width ) ; }

protected double length; protected double width; }

class Square extends Retangle {

public Square(double side) //调用父类的构造方法 { super(side,side); } public double calcPerimeter() { return width * 4; } public void Show() {

System.out.println( \边长为\ + width + \的正方形\);

} }

public class Test{

public static void main(String args[]){ Square sq1=new Square(2.0); sq1.Show();

System.out.println(\正方形的周长为\+sq1.calcPerimeter()); } }

2) 类的继承

继承是面向对象程序设计的方法中的一种重要手段,通过继承可以更有效的组织程序的结构,明确类之间的关系。继承通过extends关键字来实现,子类继承父类的属性和行为,同时可以修改父类的属性和行为,并添加新的属性和行为。Java不支持多重继承。

创建子类的格式如下

class SubClass extends SuperClass{ …… }

其中 SubClass→子类的名称

extends→继承的关键字 SuperClass→父类的名字

例子3-2 请分析程序,填写语句的功能注释,并上机调试成功。 下面这个例子通过点、圆的层次结构,介绍类的继承。

---------------------------------------------------------------------------- import java.text.DecimalFormat; //调用格式化数字输出

import javax.swing.JOptionPane; // joptionpane让您轻松弹出一个标准的对话框

class Point{ //父类点的的定义 protected int x,y ; // 定义点的坐标 public Point(){ // 确定构造函数 setPoint(0,0); } public Point(int a,int b){ //构造函数重载 带参数的构造函数 setPoint(a,b); }public void setPoint(int a,int b){ // ( 1) x=a;