当前位置:文档之家› 20XX级java语言实验3指导(面向对象程序设计(继承、封装、多态))

20XX级java语言实验3指导(面向对象程序设计(继承、封装、多态))

20XX级java语言实验3指导(面向对象程序设计(继承、封装、多态))上机实验三:面向对象程序设计(继承、封装、多态) 类是面向对象程序设计的基础,是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) 类和类的实例化一个类的实现包括两部分:类声明和类体。

、类声明[public][abstract][final] class className [extends superclassName] [implements interfaceNameList] {……}期中修饰符[public][abstract][final]说明类的属性className为类名superclassName为父类的名字interfaceNameList为类实现的接口列表、类体类体定义如下 class className {[public|protected|private] [static] [final] [transient] [volatile] Type variableName; //成员变量[public|protected|private] [static] [final] [abstract] [native] [synchronized] returnTypemethondName ( [paramList] ) [throws exceptionList] {statements} //成员方法 }、成员变量成员变量的声明方式如下[public|protected|private] [static] [final] [transient] [volatile] Type variableName; //成员变量其中:[public|protected|private] →可见性[static] →静态变量,相当于实例变量[final] →常量[transient] →暂时性变量,用于对象存档[volatile] →变量,用于共发线程的共享、成员方法[public|protected|private] [static] [final] [abstract] [native] [synchronized] returnTypemethondName ( [paramList] ) [throws exceptionList]//方法体的声明 {statements} //方法体其中:[public|protected|private] →可见性[static] →静态方法,也叫类方法,可以通过类名直接调用 [final] →方法不能被重写[abstract] →抽象方法,没有方法体 [native] →集成其他语言的代码[synchronized] →控制多个并发线程的访问例子3-1请根据注释填写语句,并上机调试成功根据注释添加语句,并调试和修改程序,使其能够执行。

--------------------------------------------------------------------------------------------------------------------- class Retangle {publicRetangle(double l, double w) { length = l; width = w;}public double calcPerimeter //返回周长{ } public double calcArea //返回面积{ }public void Show //显示矩形的长和宽{ } protected double length; protected double width; } class Square extends Retangle {public Square(double side) //调用父类的构造方法{} public double calcPerimeter { return width * 4; } public void Show {( “边长为” + width + “的正方形”); } }publicclass Test{public static void main(String args){Square sq1=new Square ;;(\正方形的边长为\} return (width+length)*2; }return width*length; ----------------------------------------------------------------------------------------------------------------- (\;填写的语句是: super(side,side);classRetangle { publicRetangle(double l, double w) { length = l; width = w;}publicdoublecalcPerimeter //返回周长{return (width+length)*2;} publicdoublecalcArea //返回面积{ returnwidth*length; }publicvoid Show //显示矩形的长和宽{ (\+length+\+\+width ) ; }protecteddoublelength; protecteddoublewidth; }class Square extendsRetangle {public Square(double side) //调用父类的构造方法{ super(side,side); } publicdoublecalcPerimeter { returnwidth * 4; } publicvoid Show { ( \边长为\ + width + \的正方形\);} }publicclass Test{publicstaticvoid main(String args){ Square sq1=newSquare ; ;(\正方形的周长为\+ ); } }2) 类的继承继承是面向对象程序设计的方法中的一种重要手段,通过继承可以更有效的组织程序的结构,明确类之间的关系。

继承通过extends关键字来实现,子类继承父类的属性和行为,同时可以修改父类的属性和行为,并添加新的属性和行为。

Java不支持多重继承。

创建子类的格式如下classSubClass extends SuperClass{ …… }其中SubClass→子类的名称extends→继承的关键字 SuperClass→父类的名字例子3-2 请分析程序,填写语句的功能注释,并上机调试成功。

下面这个例子通过点、圆的层次结构,介绍类的继承。

---------------------------------------------------------------------------- import ; //调用格式化数字输出import ; // joptionpane让您轻松弹出一个标准的对话框class Point{//父类点的的定义protected intx,y ; // 定义点的坐标 public Point { // 确定构造函数setPoint(0,0);} public Point(inta,int b){ //构造函数重载带参数的构造函数setPoint(a,b); }public void setPoint(inta,int b){ // x=a;y=b; } public intgetX { return x;} //获得X的坐标 public intgetY { return y;} // 获得Y的坐标public String toString { return \ } }/*子类圆的定义*/class Circle extends Point { //圆类继承父类点类 protected double radius ;//定义圆的半径public Circle { setRadius(0);}// 定义子类的构造函数,隐含调用了父类的构造函数 public Circle(double r,inta,int b){ super(a,b);// setRadius(r); } public void setRadius(double r){ radius = (r>=r:); // } public double getRadius { // 获得圆半径return radius; }public double area { //return *radius*radius; } public String toString {//圆的半径。

以及圆心坐标转换成字符串输出 return \ } } public class InheritanceTest{ public static void main(String args){ Point pointRef,p;//声明两点对象Circle circleRef,c;//声明两圆对象 String output;//定义一个字符串变量 p=new Point(30,50);//给点对象赋值 c=new Circle (,120,89);//给圆对象赋值//把点对象和圆对象转换成字符串后给字符串output 赋值output=\pointRef=c; output=output+\。

相关主题