2016级java语言实验3指导(面向对象程序设计(继承、封装、多态))
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
上机实验三:面向对象程序设计(继承、封装、多态) 类是面向对象程序设计的基础,是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("正方形的边长为"+sq1.calcPerimeter());
}
{ length = l; width = w;}
public double calcPerimeter() //返回周长
{ return (width+length)*2; } public double calcArea() //返回面积
{ return width*length; } public void Show() //显示矩形的长和宽
{ System.out.print("length="+length+"\n"+"width="+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 + "的正方形");