第4章面向对象基础.ppt
《第4章面向对象基础.ppt》由会员分享,可在线阅读,更多相关《第4章面向对象基础.ppt(96页珍藏版)》请在三一办公上搜索。
1、Java实用教程,第4章 面向对象基础,第 4 章 面向对象基础,4.1 面向对象程序设计4.2 类 和 对 象4.3 包4.4 继 承4.5 多 态4.6 特 殊 类4.7 接 口,面向过程 在一个结构体中定义窗口的大小,位置,颜色,背景等属性,对窗口操作的函数与窗口本身的定义没有任何关系,如HideWindow,MoveWindow,MinimizeWindow,这些函数都需要接受一个代表要被操作的窗口参数,是一种谓语与宾语的关系。面向对象 定义窗口时,除了要指定在面向过程中规定的那些属性,如大小,位置,颜色,背景等外,还要指定该窗口可能具有的动作,如隐藏,移动,最小化等。这些函数被调用时
2、,都是以某个窗口要隐藏,某个窗口要移动的语法格式来使用的,这是一种主语与谓语的关系。面向对象的三大特征封装(Encapsulation)继承(Inheritance)多态(Polymorphism),程序设计所面对的问题域客观世界,是由许多事物构成的,这些事物既可以是有形的(比如一辆汽车),也可以是无形的(比如一次会议)。把客观世界中的事物映射到面向对象的程序设计中就是对象。对象是面向对象程序设计中用来描述客观事物的程序单位。客观世界中的许多对象,无论其属性还是其行为常常有许多共同性,抽象出这些对象的共同性便可以构成类。所以,类是对象的抽象和归纳,对象是类的实例。,4.1.1.面向对象的基本概
3、念,只要仔细研究程序设计所面对的问题域客观世界,我们就可以看到:客观世界是由一些具体的事物构成的,每个事物都具有自己的一组静态特征(属性)和一组动态特征(行为)。例如,一辆汽车有颜色、型号、马力、生产厂家等静态特征,又具有行驶、转弯、停车等动态特征。把客观世界的这一事实映射到面向对象的程序设计中,则把问题域中的事物抽象成了对象(Object),事物的静态特征(属性)用一组数据来描述,事物的动态特征(行为)则用一组方法来刻画。,4.1.2 对象,(1)对象标识:即对象的名字,是用户和系统识别它的唯一标志。例如,汽车的牌照可作为每一辆汽车对象的标识。对象标识有“外部标识”和“内部标识”之分。外部标
4、识供对象的定义者或使用者用,内部标识供系统内部唯一地识别每一个对象。在计算机世界中,我们可以把对象看成计算机存储器中一块可标识的区域,它能保存固定或可变数目的数据(或数据的集合)。,4.1.2 对象特征,(2)属性:即一组数据,用来描述对象的静态特征。例如,汽车的颜色、型号、马力、生产厂家等。在Java程序中,把这一组数据称为数据成员。(3)方法:也称为服务或操作,它是对象动态特征(行为)的描述。每一个方法确定对象的一种行为或功能。例如,汽车的行驶、转弯、停车等动作可分别用move()、rotate()、stop()等方法来描述。为避免混淆,本书中把方法称为成员方法。,4.1.2 对象特征,在
5、Java程序中,类是创建对象的模板,对象是类的实例,任何一个对象都是隶属于某个类的。Java程序设计是从类的设计开始的,所以,在进一步讲述对象的知识之前,必须先掌握类的概念。,4.1.2 对象特征,对象是对事物的抽象,而类是对对象的抽象和归纳。找出事物的共性,把具有共同性质的事物归结为一类,得出一个抽象的概念类。在面向对象的编程语言中,类是一个独立的程序单位,是具有相同属性和方法的一组对象的集合。类的概念使我们能对属于该类的全部对象进行统一的描述。例如,“树具有树根、树干、树枝和树叶,它能进行光合作用”。,4.1.3 类,描述一个类需要指明下述三个方面内容:(1)类标识:类的一个有别于其他类的
6、名字。这是必不可少的。(2)属性说明:用来描述相同对象的静态特征。(3)方法说明:用来描述相同对象的动态特征。,4.1.3 类,例如,下面是对dog类进行的描述:class dog/class指出这是一个类,dog是类标识 String name;int AverageWeight;类的属性(静态特征)int AverageHeight;public void move()类的方法(动态特征)public void ShowDog(),dog类,4.2 类 和 对 象,Java语言与其他面向对象语言一样,引入了类和对象的概念,类是用来创建对象的模板,它包含被创建对象的属性和方法的定义。因此,要
7、学习Java编程就必须学会怎样去编写类,即怎样用Java的语法去描述一类事物共有的属性和行为。对象的属性通过变量来刻画,而对象的行为通过方法来体现。方法可以操作属性形成一定的算法来实现一个具体的功能。类把属性和方法封装成一个整体。,类是对某一类事物的描述,是抽象的、概念上的定义;对象是实际存在的该类事物的每个个体,因而也称实例(instance)。,如果将对象比作汽车,那么类就是汽车的设计图纸。所以面向对象程序设计的重点是类的设计,而不是对象的设计。,4.2 类 和 对 象,4.2.1 定义类,在Java语言中,类是基本的构成要素,是对象的模板,Java程序中所有的对象都是由类创建的。一个Ja
8、va类主要包括以下两部分:类的声明类的主体,类的声明,在类声明中,需要定义类的名称、对该类的访问权限、该类与其他类的关系等。类声明的格式如下:修饰符用于指定类的访问权限,可选值为public、abstract和final。,修饰符 class extends 父类名 implements 接口列表,类的声明,类名用于指定类的名称,类名必须是合法的Java标识符。一般情况下,要求首字母大写。extends 父类名用于指定要继承参数。implements 接口列表用于指定该类实现的所有接口。,类 体,类声明部分大括号中的内容为类体。类体主要由以下两部分构成:(1)成员变量的定义;(2)成员方法的定
9、义。在程序设计过程中,编写一个能完全描述客观事物的类是不现实的。比如,构建一个Apple类,该类可以拥有很多很多的属性(即成员变量),在定义该类时,选取程序需要的必要属性和行为就可以了。,类的定义,class Personint age;void shout()System.out.println(“my age is“+age);age是类的属性,也叫类成员变量。shout是方法也叫类的成员函数。shout方法可以直接访问同一个类中的age变量,如果一个方法中有与成员变量同名的局部变量,该方法中对这个变量名的访问是局部变量,而不再是成员变量。,4.2.2 了解成员方法,Java中类的行为由类
10、的成员方法来实现。类的成员方法由方法声明和方法体两部分组成。其一般格式如下:,修饰符(参数列表)方法体,4.2.2 了解成员方法,修饰符用于指定方法的访问权限,可选值为public、protected和private。方法返回值的类型用于指定该方法的返回值的类型,如果该方法没有返回值,必须使用关键字void进行标识。方法返回值的类型可以是任何Java数据类型。,了解成员方法,方法名用于指定成员方法的名称,方法名必须是合法的Java标识符。参数列表用于指定方法中所需的参数。当存在多个参数时,各参数之间应使用逗号分隔。方法的参数可以是任何Java数据类型。,了解成员方法,方法体是方法的实现部分,在
11、方法体中可以完成指定的工作,可以只打印一句话,也可以省略方法体,使方法什么都不做。需要注意的是:当省略方法体时,其外面的大括号一定不能省略。,4.2.3 成员变量和局部变量,在类体中所声明的变量称为类的成员变量,而在方法体中声明的变量和方法的参数则称为局部变量。现在我们来看一下,如何声明成员变量和局部变量,以及变量的有效范围。,声明成员变量,Java用成员变量来表示类的状态和属性,声明成员变量的基本语法格式如下:修饰符:可选参数,用于指定变量的被访问权限,可选值为public、protected和private。static:可选,用于指定该成员变量为静态变量,可以直接通过类名访问。如果省略该
12、关键字,则表示该成员变量为实例变量。,修饰符 static final;,声明成员变量,final:可选,用于指定该成员变量为取值不会改变的常量。变量类型:必选:用于指定变量的数据类型,其值可以为Java中的任何一种数据类型。变量名:必选,用于指定成员变量的名称,变量名必须是合法的Java标识符。,1访问控制权限,(1)public 公共变量 由public修饰的变量称为公共变量,可被任何包中的任何类访问,只有在确认任何外部访问都不会带来不良后果的情况下才将成员声明为公共的。公共变量对任何类都是可见的,因此它没有秘密可言,不具有数据保护功能。(2)private私有变量 由private修饰的
13、变量称为私有变量,只能被声明它的类所使用,拒绝任何外部类的访问。私有变量是不公开的,它们得到了最好的保护,这是对类进行封装时使用的主要方法。,(3)protected 受保护变量 由protected修饰的变量称为受保护变量,可被声明它的类和派生的子类以及同一个包中的类访问。(4)package包变量 由package修饰的变量称为包变量,在声明时常常省略package关键字,即没有修饰符的成员被视为包成员。包成员可被声明它的类和同一个包中的其它类(包括派生子类)所访问,在其它包中的子类则不能访问父类的包成员。,2static 静态变量,static声明的成员变量被视为类的成员变量,而不把它当
14、作实例对象的成员变量。换句话说,静态变量是类固有的,可以直接引用,其它成员变量仅仅被声明,生成实例对象后才存在,才可以被引用。基于这样的事实,也把静态变量称为类变量,非静态变量称为实例变量。相应地,静态方法称为类方法,非静态方法称为实例方法。,从输出结果中可以得出以下几点结论:,类的静态变量可以直接引用,例如在程序中直接使用了StaticDemo.getX(),而非静态变量则不行。类的静态变量相当于某些程序语言的全局变量。静态方法只能使用静态变量,不能使用实例变量。类的静态变量只有一个版本,所有实例对象引用的都是同一个版本。对象实例化后,每个实例变量都被制作了一个副本,它们之间互不影响。,3f
15、inal 最终变量,一旦成员变量被声明为final,在程序运行中将不能被改变。这样的成员变量就是一个常量。例如:final double PI=3.14159;该语句声明一个常量PI,如果在后面试图重新对它赋值,将产生编译错误。另外,常量名一般用大写字母。常量和直接量一样不占用内存空间。,声明成员变量,例如,在类中声明3个成员变量。,public class Apple public String color;/声明公共变量color public static int count;/声明静态变量count public final boolean MATURE=true;/声明常量MATUR
16、E并赋值 public static void main(String args)System.out.println(Apple.count);Apple apple=new Apple();System.out.println(apple.color);System.out.println(apple.MATURE);,声明局部变量,例如,在grow()成员方法中声明两个局部变量。,public void grow()final boolean STATE;/声明常量STATE int age;/声明局部变量age,变量的有效范围,变量的有效范围是指该变量在程序代码中的作用区域,在该区域外
17、不能直接访问变量。有效范围决定了变量的生命周期,变量的生命周期是指从声明一个变量并分配内存空间、使用变量,然后释放该变量并清除所占用内存空间的一个过程。进行变量声明的位置,决定了变量的有效范围,根据有效范围的不同,可将变量分为以下两种。,变量的有效范围,(1)成员变量:在类中声明,在整个类中有效。(2)局部变量:在方法内或方法内的复合代码块(“”与“”之间的代码)中声明的变量。在复合代码块声明的变量,只在当前复合代码块中有效;在复合代码块外、方法内声明的变量在整个方法内都有效。,变量的有效范围,例如下面的实例:,public class Olympics private int medal_A
18、ll=800;/成员变量 public void China()int medal_CN=100;/方法的局部变量 if(medal_CN1000)/代码块 int gold=50;/代码块的局部变量 medal_CN+=50;/允许访问 medal_All-=150;/允许访问,4.2.5 对象生命周期,在Java语言中,把任何事物都看做对象,例如一个人、一个动物,或者没有生命体的轮船、汽车、飞机,甚至概念性的抽象,例如公司业绩。一个对象在Java语言中的生命周期包括3个阶段:创建对象使用对象销毁对象,创建对象,对象是类的实例。Java定义任何变量都需要指定变量类型,因此,在创建对象之前,一
19、定要先声明该对象。声明对象的一般格式如下:类名:用于指定一个已经定义的类。对象名:用于指定对象名称,对象名必须是合法的Java标识符。,类名 对象名;,创建对象,例如声明Apple类的一个对象redApple的代码如下:,Person p1;,创建对象,在声明对象时,只是在内存中为其建立一个引用,并置初值为null,表示不指向任何内存空间。声明对象以后,需要为对象分配内存,这个过程也称为实例化对象。在Java中使用关键字new来实例化对象,具体语法格式如下:,对象名=new 构造方法名(参数列表);,创建对象,对象名:必选,用于指定已经声明的对象名。类名:必选,用于指定构造方法名,即类名,因为
20、构造方法与类名相同。参数列表:可选参数,用于指定构造方法的入口参数。如果构造方法无参数,则可以省略。,创建对象,在声明Apple类的一个对象redApple后,可以通过以下代码为对象redApple分配内存(即创建该对象):在声明对象时,也可以直接实例化该对象:这相当于同时执行了对象声明和创建对象:,Person p1=new Person();,p1=new Person();,Person p1;p1=new Person();,Person p1=new Person();执行完后的内存状态,创建对象,当一个对象被创建时,会对其中各种类型的成员变量自动进行初始化赋值。除了基本数据类型之外
21、的都是变量类型都是引用类型,如上面的Person及前面讲过的数组。,创建对象,使用对象,创建对象后,就可以访问对象的成员变量,并改变成员变量的值了,而且还可以调用对象的成员方法。通过使用运算符“.”实现对成员变量的访问和成员方法的调用。语法格式为:,对象.成员变量对象.成员方法(),创建新的对象之后,我们就可以使用“对象名.对象成员”的格式,来访问对象的成员(包括属性和方法)class TestPersonpublic static void main(String args)Person p1=new Person();Person p2=new Person();p1.age=-30;p1
22、.shout();p2.shout();,使用对象,上面程序运行的内存布局如下图,使用对象,对象的生命周期,销毁对象,在许多程序设计语言中,需要手动释放对象所占用的内存,但是,在Java中则不需要手动完成这项工作。Java提供的垃圾回收机制可以自动判断对象是否还在使用,并能够自动销毁不再使用的对象,收回对象所占用的资源。Java提供了一个名为finalize()的方法,用于在对象被垃圾回收机制销毁之前执行一些资源回收工作,由垃圾回收系统调用,可以重写该方法。但是垃圾回收系统的运行是不可预测的。finalize()方法没有任何参数和返回值,每个类有且只有一个finalize()方法。,实现类的封
23、装性,如果外面的程序可以随意修改一个类的成员变量,会造成不可预料的程序错误,就象一个人的身高,不能被外部随意修改,只能通过各种摄取营养的方法去修改这个属性。在定义一个类的成员(包括变量和方法)时,使用private关键字说明这个成员的访问权限,这个成员成了类的私有成员,只能被这个类的其他成员方法调用,而不能被其他的类中的方法所调用。,为了实现良好的封装性,我们通常将类的成员变量声明为private,再通过public的方法来对这个变量进行访问。对一个变量的操作,一般都有读取和赋值操作,我们分别定义两个方法来实现这两种操作,一个是getXxx()(Xxx表示要访问的成员变量的名字),用来读取这个
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 面向 对象 基础
链接地址:https://www.31ppt.com/p-6618353.html