Chapter_04 面向对象编程.ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《Chapter_04 面向对象编程.ppt》由会员分享,可在线阅读,更多相关《Chapter_04 面向对象编程.ppt(100页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第4章章 面向对象编程面向对象编程 主要任务主要任务:l 理解面向对象编程的基本概念理解面向对象编程的基本概念l 了解类的封装方法了解类的封装方法l 如何创建类和对象如何创建类和对象l 了解成员变量和成员方法的特性了解成员变量和成员方法的特性 l 学习使用学习使用OOP方式进行程序设计方式进行程序设计 11本章主要内容l1.面向对象基本概念面向对象基本概念 l2.Java的类与对象的类与对象 l3.成员变量与访问权限成员变量与访问权限 l 4.成员方法成员方法224.1 面向对象基本概念面向对象基本概念lJava是完全面向对象编程语言。面向是完全面向对象编程语言。面向对象编程(对象编程(OO
2、P)是一种全新的编程)是一种全新的编程理念。理念。l什么是对象?类又是什么?它们之间有什么是对象?类又是什么?它们之间有什么关系?对象是如何通过消息和外部什么关系?对象是如何通过消息和外部通讯的?通讯的?334.1.1 对象对象l在现实世界中,对象是在现实世界中,对象是状态状态和和行为行为的结合体的结合体l在在开发软件的信息世界中,对象定义为相关开发软件的信息世界中,对象定义为相关数据数据和和方法方法的集合。的集合。l对象是现实世界对象的抽象模型。从现实世对象是现实世界对象的抽象模型。从现实世界对象中抽象出来的对象,一般通过变量描界对象中抽象出来的对象,一般通过变量描述其述其状态状态,通过方法
3、实现其,通过方法实现其行为行为。l变量是一种有名称的数据实体,而方法则是变量是一种有名称的数据实体,而方法则是和对象相关的函数或过程。和对象相关的函数或过程。44 4.1.2 类 l类就是对象的软件图纸、模板或原型,类就是对象的软件图纸、模板或原型,它定义了同类对象共有的变量和方法。它定义了同类对象共有的变量和方法。l类和对象二者不太容易区分。一方面,类和对象二者不太容易区分。一方面,由于软件对象都是现实对象或抽象概念由于软件对象都是现实对象或抽象概念的电子模型,另一方面,经常不加区分的电子模型,另一方面,经常不加区分地将对象和类统称为地将对象和类统称为“对象对象”。lJava编程就是设计类,
4、可以采用自定编程就是设计类,可以采用自定义方法或继承方法设计一个类,然后使义方法或继承方法设计一个类,然后使用它的实例对象完成具体的功能。用它的实例对象完成具体的功能。554.1.3 封装封装l含义含义:是把类设计成一个黑箱是把类设计成一个黑箱子子,使用,使用者只能看见类中定义的公共方法,而看者只能看见类中定义的公共方法,而看不到方法实现的细节,也不能直接对类不到方法实现的细节,也不能直接对类的数据进行操作,迫使用户通过接口去的数据进行操作,迫使用户通过接口去访问数据。访问数据。l相关数据和方法封装到一个包里,为程相关数据和方法封装到一个包里,为程序员带来了两个好处:序员带来了两个好处:模块化
5、模块化和和数据隐数据隐藏藏。66l模块化:模块化:对象源代码的编写和维护可以对象源代码的编写和维护可以独立进行,不影响其他模块。独立进行,不影响其他模块。l数据隐藏数据隐藏:使对象有能力保护自己,提:使对象有能力保护自己,提供一个公共接口和其他对象联系,自行供一个公共接口和其他对象联系,自行维护自身的数据和方法。维护自身的数据和方法。JAVA的封装性有效的提高了程序的安全的封装性有效的提高了程序的安全性与可维护性。性与可维护性。4.1.3 封装封装774.1.4 消息消息l对象的行为由方法来实现,消息传递是对象的行为由方法来实现,消息传递是对象之间进行交互的主要方式。对象之间进行交互的主要方式
6、。l构成消息的三个要素是:构成消息的三个要素是:接收消息的对象接收消息的对象 接收消息后进行处理的方法接收消息后进行处理的方法 方法所需要的参数方法所需要的参数884.1.4 消息消息l消息传递机制的消息传递机制的三个要素是:三个要素是:事件源(如:失火单位)事件源(如:失火单位)事件监听器(如:事件监听器(如:119电话及灭火部门)电话及灭火部门)事件对象事件对象 (如:火情)(如:火情)994.1.5 继承继承l允许由一个类定义另外一个类。允许由一个类定义另外一个类。l继承继承(inheritanceinheritance)可以)可以发生在不同发生在不同层次上。所有层次的类都是从层次上。所
7、有层次的类都是从ObjectObject类类那里直接或间接地衍生下来的。一般来那里直接或间接地衍生下来的。一般来说,层次越高,类就越抽象,反之类就说,层次越高,类就越抽象,反之类就越具体。越具体。l继承使父类的代码得到重用,在继承父继承使父类的代码得到重用,在继承父类提供的共同特性基础上添加新的代码,类提供的共同特性基础上添加新的代码,有效提高了编程效率。有效提高了编程效率。10104.1.6 接口接口l接口(接口(interface)可以看成是为两个不)可以看成是为两个不相关的实体提供交流途径的设备。在相关的实体提供交流途径的设备。在Java中,接口就是为两个不相关的类中,接口就是为两个不相
8、关的类提供交流的设备。接口非常类似于协议提供交流的设备。接口非常类似于协议(protocol一种共同行为的约定),是一种共同行为的约定),是一个包含方法定义和常量值的集合。一个包含方法定义和常量值的集合。l接口不需要建立继承关系,就可以使两接口不需要建立继承关系,就可以使两个不相关的类进行交互。接口提取了类个不相关的类进行交互。接口提取了类的某些共同点,声明一些能被多个类实的某些共同点,声明一些能被多个类实现的方法,但不给出方法体。现的方法,但不给出方法体。1111例例4.1 设计一个设计一个Applet小程序,使其可以进行小程序,使其可以进行简单的加法运算。简单的加法运算。/源程序名:源程序
9、名:Addition.javaimport java.awt.*;import java.awt.event.*;import java.applet.Applet;1212public class Addition extends Applet implements ActionListener Label label1=new Label(+);Label label2=new Label(=);TextField field1=new TextField(6);TextField field2=new TextField(6);TextField field3=new TextField
10、(6);Button button1=new Button(相加相加);1313 public void init()/初始化初始化 add(field1);add(label1);add(field2);add(label2);add(field3);add(button1);button1.addActionListener(this);1414 public void actionPerformed(ActionEvent e)/处理按钮事件处理按钮事件 int x=Integer.parseInt(field1.getText()+Integer.parseInt(field2.get
11、Text();field3.setText(Integer.toString(x);/数值数值转换为字符串转换为字符串 1515Addition.html1616运行结果17174.2 Java的类与对象的类与对象lJava程序的所有数据类型都是用类来程序的所有数据类型都是用类来实现的,实现的,Java语言是建立在类这个逻语言是建立在类这个逻辑结构之上,所以辑结构之上,所以Java是一种完全面是一种完全面向对象的程序设计语言。向对象的程序设计语言。l类是类是Java的核心,的核心,Java程序都由类组程序都由类组成,一个程序至少要包含一个类,也可成,一个程序至少要包含一个类,也可以包含多个类。
12、对象是类的实例,以包含多个类。对象是类的实例,Java程序中可以使用标识符表示对象,程序中可以使用标识符表示对象,并通过对象引用类中的变量和方法。并通过对象引用类中的变量和方法。18184.2.1 类的创建类的创建l类通过关键字类通过关键字class来创建,下面的声明语句来创建,下面的声明语句格式给出了可能出现的符号和顺序:格式给出了可能出现的符号和顺序:public abstract final extends 父类父类 implements 接口接口 其中,其中,表示为可选项,表示为可选项,表示为必选项。表示为必选项。关键字含义说明如下:关键字含义说明如下:19191class 类名lcl
13、ass关键字告诉编译器这是一个类,关键字告诉编译器这是一个类,类名是可以自由选取但必须是合法的标类名是可以自由选取但必须是合法的标识符。识符。l在声明类的语句中,在声明类的语句中,class前面的关键前面的关键字称为类的修饰符。字称为类的修饰符。20202访问限制修饰词l(1)public(公共的)(公共的)带有带有public修饰符的类,称为公共类,是访问限制最宽的修修饰符的类,称为公共类,是访问限制最宽的修饰词,公共类可以被任何包中的类使用。饰词,公共类可以被任何包中的类使用。注意:注意:在同一个源程序文件中只能有一个在同一个源程序文件中只能有一个public类。类。l(2)private
14、(私有的)(私有的)带有带有private修饰符的类,称为私有类,是访问限制最窄的修饰符的类,称为私有类,是访问限制最窄的修饰词,只能被该类的对象访问,其子类不能访问,更不能跨修饰词,只能被该类的对象访问,其子类不能访问,更不能跨包访问包访问。l(3)protect(保护的)(保护的)带有带有protect修饰符的类,称为保护类,能被该类的对象与修饰符的类,称为保护类,能被该类的对象与子类访问,即使子类在不同包中也可以。子类访问,即使子类在不同包中也可以。l(4)default(默认的)(默认的)带有带有default修饰符的类,称为默认类,与没有任何修饰符修饰符的类,称为默认类,与没有任何修
15、饰符相同,默认情况下,类只能被同一个包中的其他类访问。相同,默认情况下,类只能被同一个包中的其他类访问。21213Abstract(抽象的)l有时,定义的类代表了一个抽象的概念,有时,定义的类代表了一个抽象的概念,就不能用它来实例化一个对象。就不能用它来实例化一个对象。l同样在同样在OOP中,可能建立了一个不需中,可能建立了一个不需要产生对象的类。例如,要产生对象的类。例如,java.lang包包中的中的Number类代表了数这个抽象概念,类代表了数这个抽象概念,可以用它在程序中产生一个数的子类,可以用它在程序中产生一个数的子类,如如Interger或或Float,但从,但从Number中直中
16、直接生成对象是没有意义的。接生成对象是没有意义的。labstract说明的类称为抽象类,说明的类称为抽象类,不能用不能用它实例化一个对象,它只能被继承它实例化一个对象,它只能被继承。22224final(最终的)lfinal说明的类称为最终类。说明的类称为最终类。一个最终类一个最终类不可能有子类,也就是说它不能被继承。不可能有子类,也就是说它不能被继承。l黑客常用的一个攻击技术是设计一个子黑客常用的一个攻击技术是设计一个子类,然后用它替换原来的父类。子类和类,然后用它替换原来的父类。子类和父类很相象,但做的事情却大不一样。父类很相象,但做的事情却大不一样。23235Extends(继承)父类名
17、lextends告诉编译器创建的类是从父类告诉编译器创建的类是从父类继承下来的子类,父类必须是继承下来的子类,父类必须是Java系系统类或已经定义的类。统类或已经定义的类。l从父类继承,可以提高代码的重用性,从父类继承,可以提高代码的重用性,不必从头开始设计程序。大部分情况下不必从头开始设计程序。大部分情况下应该利用继承的手段编程,只在没有合应该利用继承的手段编程,只在没有合适的类可以继承时才自己设计类。适的类可以继承时才自己设计类。24246Implements(实现)接口名limplements告诉编译器类实现的接口,告诉编译器类实现的接口,接口必须有定义,一般为系统类。接口必须有定义,一
18、般为系统类。l接口是消息传递的通道,通过接口,消接口是消息传递的通道,通过接口,消息才能传递到处理方法中进行处理。息才能传递到处理方法中进行处理。implements说明类说明类可以实现的一个或可以实现的一个或多个接口,如果有多个接口,要用逗号多个接口,如果有多个接口,要用逗号分隔。分隔。2525例4.2 下面这个Applet程序将在页面上输出两个矩形,并伴有文字输出。见图:2626程序代码:程序代码:import java.awt.*;import java.applet.Applet;public class Class1 extends Applet private int x,y,wi
19、dth,height;public void init()width=60;height=60;2727 public void setPosition(int xPos,int yPos)x=xPos;y=yPos;public void paint(Graphics g)setPosition(20,20);g.drawRect(x,y,width,height);g.drawString(矩形矩形 1 的的 X 位置位置:+x,20,100);g.drawString(矩形矩形 1 的的 Y 位置位置:+y,20,120);2828 setPosition(170,20);g.drawR
20、ect(x,y,width,height);g.drawString(矩形矩形 2 的的 X 位置位置:+x,170,100);g.drawString(矩形矩形 2 的的 Y 位置位置:+y,170,120);2929Class1.html 30304.2.2 创建对象创建对象l类是对象的产品模板。在现实世界里,我们类是对象的产品模板。在现实世界里,我们使用的是产品而不是产品的图纸。同样道理,使用的是产品而不是产品的图纸。同样道理,Java运行的应该是用类创建的实例化对象。运行的应该是用类创建的实例化对象。l一个典型的一个典型的Java程序会创建很多对象,它们程序会创建很多对象,它们通过消息
21、传递进行相互交流,共同完成程序通过消息传递进行相互交流,共同完成程序的功能。一旦任务完成,的功能。一旦任务完成,对象就会被垃圾收对象就会被垃圾收集器收回集器收回,完成它从创建、使用到清除的生,完成它从创建、使用到清除的生命三步曲。命三步曲。l下面介绍对象的创建过程。先看一个例子。下面介绍对象的创建过程。先看一个例子。3131例例4.3 下面这个程序是改写后的例下面这个程序是改写后的例4.2。import java.awt.*;import java.applet.Applet;public class Class_2 extends Applet MyBox b1=new MyBox();My
22、Box b2=new MyBox(170,20,60,60);3232public void paint(Graphics g)b1.setPosition(20,20);b1.setSize(60,60);b1.draw(g);g.drawString(矩形矩形 1 的的 X 位置位置:+b1.getX(),20,100);g.drawString(矩形矩形 1 的的 Y 位置位置:+b1.getY(),20,120);b2.draw(g);g.drawString(矩形矩形 2 的的 X 位置位置:+b2.getX(),b2.getX(),b2.getY()+80);g.drawStrin
23、g(矩形矩形 2 的的 Y 位置位置:+b2.getY(),b2.getX(),b2.getY()+100);程序代码:程序代码:3333class MyBox private int x,y,width,height;MyBox()x=0;y=0;width=0;height=0;3434 MyBox(int xPos,int yPos,int w,int h)x=xPos;y=yPos;width=w;height=h;public void setPosition(int xPos,int yPos)x=xPos;y=yPos;3535 public void setSize(int w
24、,int h)width=w;height=h;public int getX()return x;3636 public int getY()return y;public void draw(Graphics g)g.drawRect(x,y,width,height);3737Class_2.html 3838下面给出创建对象和使用对象的方法说明下面给出创建对象和使用对象的方法说明l1创建对象与构造方法创建对象与构造方法 首先必须拥有一个合适的类才能创建一首先必须拥有一个合适的类才能创建一个合适的对象,有了合适的对象才能完个合适的对象,有了合适的对象才能完成合适的工作。下面的三条语句分别
25、创成合适的工作。下面的三条语句分别创建了三个对象:建了三个对象:Lable label1=new Label(标签标签);TextField field1=new TextField(10);MyBox b1=new MyBox(20,20,100,100);3939创建对象语句 l创建对象语句有三个组成部分:声明对创建对象语句有三个组成部分:声明对象、实例化、初始化。象、实例化、初始化。格式为:格式为:=new(参数列表参数列表)4040创建对象 l创建对象相当于定义一个变量,既可采用上创建对象相当于定义一个变量,既可采用上述方法,也可以把上述步骤分开进行,先声述方法,也可以把上述步骤分开进
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Chapter_04 面向对象编程 面向 对象 编程
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内