Java程序设计基础 教学课件 ppt 作者 肖孟强 第3章

上传人:E**** 文档编号:89370073 上传时间:2019-05-24 格式:PPT 页数:45 大小:194.50KB
返回 下载 相关 举报
Java程序设计基础 教学课件 ppt 作者  肖孟强 第3章_第1页
第1页 / 共45页
Java程序设计基础 教学课件 ppt 作者  肖孟强 第3章_第2页
第2页 / 共45页
Java程序设计基础 教学课件 ppt 作者  肖孟强 第3章_第3页
第3页 / 共45页
Java程序设计基础 教学课件 ppt 作者  肖孟强 第3章_第4页
第4页 / 共45页
Java程序设计基础 教学课件 ppt 作者  肖孟强 第3章_第5页
第5页 / 共45页
点击查看更多>>
资源描述

《Java程序设计基础 教学课件 ppt 作者 肖孟强 第3章》由会员分享,可在线阅读,更多相关《Java程序设计基础 教学课件 ppt 作者 肖孟强 第3章(45页珍藏版)》请在金锄头文库上搜索。

1、第3章 面向对象的程序设计,3.1 简 介 3.2 类 3.3 对 象 3.4 实 例 研 究(无) 3.5 类的继承和类的多态性 3.6 接 口 与 包,3.1 简 介,Java是面向对象的程序设计语言,从面向对象这个角度看,体现了如下3个特点。 1封装性 2继承性 3通信相关性,3.2 类,1类的说明 (1)指出特性 (2)指出父类(extends部分) (3)指出接口(implements部分) 2类体,3.2.1 类的成员变量 1变量的访问权限 (1)公用(public)变量 (2)专用(private)变量 (3)保护型(protected)变量 (4)专用保护型(private p

2、rotected)变量 (5)默认型变量,2是否为静态变量 3是否为常量,3.2.2 类的方法 其格式如下所示: methodDeclaration methodBody ,3.2.3 this和super this和super是Java的两个关键字,它们用在方法体中作为两个特殊的变量前缀和方法前缀。this用来指明当前对象的成员变量或方法,以区分于同名的局部变量和其它同名的方法,而super则用于指出父类的变量和方法。,1this的使用场合 一个对象中的方法一般可以直接访问同一对象的成员变量。但是,有时候方法体内部定义的变量和成员变量名字相同,还有时方法的入口参数和对象的成员变量名字相同,那

3、么就需要将三者区别清楚。因此,专门用 this 来指明当前对象的成员变量或当前对象的方法。,2super的使用场合 在Java中,由父类派生子类,这样,子类的成员变量可能和父类的成员变量名字相同,子类的方法也可能和父类的方法一样。当需要调用父类的同名方法或使用父类的同名变量时,在子类中可用关键字super作前缀来指明父类的成员变量和方法。,3.2.4 构造函数 3.2.5 main方法,3.3 对 象,3.3.1 对象的创建 一个对象往往经历创建、运行和释放3个阶段,这称为对象的典型生命周期。 创建对象包括定义对象、建立对象和初始化对象3步。,3.3.2 对象的使用 对象使用就是指通过某种手段

4、使一个对象产生它的效能。有两种途径来使用对象:一种是通过对象变量的引用来使用对象,另一种是通过调用对象的方法来使用对象。下面我们结合具体例子来说明。,1通过对象变量的引用来使用对象 实际上,对象变量的引用就是用语句访问对象的变量,通过这种引用可以检测和修改变量。引用对象变量须按如下格式: ObjectReference.variable ; 其中,ObjectReference是对象名,variable是所引用的变量。,比如,已经由Rectangle建立了名为myRectangle的对象,它有4个可以访问的变量x,y,width和height,那么: myRectangle.x=2; myRe

5、ctangle.y=4;,这两个语句将矩形myRectangle的原点定位于X轴方向为2,Y轴方向为4的位置上,而语句: rnyRectangle.width =20; myRectangle.height=40;,则将矩形的宽定为20,长定为40。 对象变量的引用不仅能够检测和修改变量,也可以通过表达式来对几个变量进行合成,得到新的复合型变量。比如,用如下表达式引用对象变量: areaMyRectangle=myRectangle.width * myRectangle.height ;,就获得了矩形的面积,它用变量areaMyRectangle表示。 要提到的是,对象变量的引用有时会使某个

6、变量改得不符合要求,从而使一个对象处于不规范状态。因为这一点,在类的设计中,有些变量被设置为禁止被操作状态,从而使这些变量不允许其他对象访问。这时,对象变量引用就不可行了。,2通过调用对象的方法来使用对象 每个对象在创建的时候,一方面用变量确定了它的状态,由创建过程为它分配内存空间,另一方面也创建了与它有关的方法,每个方法都是和行为有关的。所以通过调用对象的某个方法来使用对象,从而产生某种行为,这是最符合逻辑思维习惯的。实际上,这也是更为 安全可靠地使用对象的一种手段,因为这避免了对变量的直接操作。,调用一个对象中的某个方法要遵照如下格式: ObjectReference.methodName

7、(paramlist); 或者: ObjectReference.methodName();,比如,从Rectangle 类中创建的对象myRectangle含有一个方法叫move(),下面的语句就是用方法move()将对象myRectangle移动到一个新的位置: myRectangle.move (5, 10);,这个语句产生的效果等同于下面两个语句: myRectangle.x=5; myRectangle.y=10;,3.3.3 对象的释放 所谓释放对象,实质上就是释放掉分配给此对象的内存空间。Java中,对象的释放是自动完成的,不需要程序员在编程时关注这一点。Java 运行系统具有所

8、谓的“垃圾收集”机制,这种机制会周期性地检测对象是否还在使用,如发现有长期不用的对象,则给予释放,回收分配给这些对象的内存,这就是垃圾收集。,具体运行中,垃圾收集是由一个称为Java 垃圾收集器的程序实现的。当一个对象在使用时,Java运行系统会将其对应的内存空间设置标记;而当一个对象结束使用时,会自动清除标记。有了这种标记设置和清除的规则,Java垃圾收集器就可以通过周期性地扫描所有Java 对象有关的内存区域标记,将没有标记的内存区列入可供分配的范畴,从而起到垃圾收集作用。,3.5 类的继承和类的多态性,3.5.1 类的继承 类的继承是面向对象的程序设计语言所具有的重要技术。有了继承技术,

9、程序设计时,就可以先定义一个包含公用变量和公用方法的类作为父类,再在此基础上创建具有专用变量和专用方法的子类。子类一方面可以增加父类中没有的变量和方法,另一方面还可以在继承基础上再定义父类中已有的变量和方法。,Java系统要求应用程序中每个类都有父类,如果一个类的定义中没有用关键字extends明确指出父类名,则Java系统默认这个类的父类为系统软件包java.1ang中的Object类。父类中凡是公用型的、保护型的或者专用保护型的变量和方法均可由子类直接调用,只有父类的专用型变量和专用型方法不能被子类调用。,例3-3: / Point.java public class Point prot

10、ected int x, y; public Point() setPoint( 0, 0 ); public Point( int a, int b ) setPoint( a, b ); ,public void setPoint( int a, int b ) x = a; y = b; public int getX() return x; public int getY() return y; public String toString() return “ + x + “, “ + y + “; ,/Circle.java public class Circle extends

11、Point protected double radius; public Circle() setRadius( 0 ); public Circle( double r, int a, int b ) super( a,b ); setRadius( r ); ,public void setRadius( double r ) radius = ( r = 0.0 ? r : 0.0 ); public double getRadius() return radius; public double area() return Math.PI * radius * radius; publ

12、ic String toString() return “Center = “ + super.toString() + “; Radius = “ + radius; ,/ Cylinder.java public class Cylinder extends Circle protected double height; public Cylinder() setHeight( 0 ); public Cylinder( double h, double r, int a, int b ) super( r, a, b ); setHeight( h ); ,public void set

13、Height( double h ) height = ( h = 0 ? h : 0 ); public double getHeight() return height; public double area() return 2 * super.area() + 2 * Math.PI * radius * height; ,public double volume() return super.area() * height; public String toString() return super.toString() + “; Height = “ + height; ,/Tes

14、t.java import javax.swing.JOptionPane; import java.text.DecimalFormat; public class Test public static void main( String args ) Cylinder c = new Cylinder( 5.7, 2.5, 12, 23 );,DecimalFormat precision2 = new DecimalFormat( “0.00“ ); String output; output = “X coordinate is “ + c.getX() + “nY coordinat

15、e is “ + c.getY() + “nRadius is “ + c.getRadius() + “nHeight is “ + c.getHeight();,c.setHeight( 10 ); c.setRadius( 4.25 ); c.setPoint( 2,2 ); output +=“nnThe new location, radius “ + “and height of c aren“ + c + “nArea is “ + precision2.format( c.area() ) +,“nVolume is “ + precision2.format( c.volum

16、e() ); JOptionPane.showMessageDialog( null, output, “Demonstrating Class Cylinder“,JOptionPane.INFORMATION_MESSAGE ); System.exit( 0 ); 运行结果见图3-3。,图3-3,程序分析:Circle类继承了Point类。这意味着Circle的public接口除了包括Circle类的setRadius、getRadius、area、toString方法和Circle的构造函数外,还包括Point的方法。应用程序Test用来测试Cylinder类。,注意Cylinder类继承了Circle类,即Cylinder的public接口除了包括Cylinder构造函数,Cylinder的方法setHeight、getHeigh

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号