《《面向对象复习》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《面向对象复习》PPT课件.ppt(32页珍藏版)》请在金锄头文库上搜索。
1、面向对象基础复习面向对象基础复习主讲:钱主讲:钱 能能重庆科创职业学院计算机学院QQ: E-mail:一、面向对象的基本概念一、面向对象的基本概念类类是对具有相同属性和方法的一组相似对象的是对具有相同属性和方法的一组相似对象的抽象,或者说类是对象的模板。类是抽象,或者说类是对象的模板。类是Java的的核心,也是核心,也是Java的基本单元。的基本单元。对象对象是某个类的实例,其变量表示属性,方法是某个类的实例,其变量表示属性,方法表示功能,表示功能,Java正是通过类和对象的概念来正是通过类和对象的概念来组织和构建程序的。组织和构建程序的。 类与对象之间的关系类与对象之间的关系:对象是类的实例
2、(或者:对象是类的实例(或者说变量),类是对象的集合(或者说类是一说变量),类是对象的集合(或者说类是一种抽象的数据类型)。种抽象的数据类型)。面向对象的三大特性面向对象的三大特性:封装:将具有相同特征的对象的数据与行为捆绑封装:将具有相同特征的对象的数据与行为捆绑在一起形成类的过程。在一起形成类的过程。继承:指在一个已有类的基础上,通过添加新的继承:指在一个已有类的基础上,通过添加新的数据和方法,从而构成一个新类的过程。数据和方法,从而构成一个新类的过程。 多态:一个类中名字相同但其参数数量与类型不多态:一个类中名字相同但其参数数量与类型不同的方法之间构成多态。同的方法之间构成多态。 二、面
3、向对象程序设计的过程二、面向对象程序设计的过程1、分析问题,抽象概念,描述类。、分析问题,抽象概念,描述类。现实现实世界世界实体实体概念概念模型模型类类对象对象实实例例化化抽抽象象抽象抽象计算机中实现计算机中实现映射映射2、编写程序,完成类的、编写程序,完成类的定义及变量、方法的定义及变量、方法的定义。定义。(类成员与实例成员,方法的重载,类成员与实例成员,方法的重载,this关键字,类与成员的访问控制关键字,类与成员的访问控制)3、保存:以源程序中类的名字命名。若有主、保存:以源程序中类的名字命名。若有主类,则类,则必须必须以主类名命名;否则选其中某类以主类名命名;否则选其中某类名命名。名命
4、名。4、编译:源程序中有多少类,将会生成多少、编译:源程序中有多少类,将会生成多少字节码文件。字节码文件。 javac 源程序名源程序名.java (编译当前路径的源程序,编译当前路径的源程序,并将生成的字节码文件放在当前路径并将生成的字节码文件放在当前路径)javac d 路径路径 源程序名源程序名.java(将编译生成的字(将编译生成的字节码文件存入指定路径;若节码文件存入指定路径;若声明了包声明了包,则在路径,则在路径后生成相应包路径)后生成相应包路径)5、解释执行、解释执行 java 主主字节码文件名字节码文件名加载相关字节码文件加载相关字节码文件为类成员分配空间为类成员分配空间(由所
5、有对象共享)(由所有对象共享)执行主方法中的语句执行主方法中的语句声明创建类的对象声明创建类的对象;为实例成员分配空间为实例成员分配空间(实例变量由所有对象独(实例变量由所有对象独占);占);执行构造方法中的语句;执行构造方法中的语句;将对象的成员与对象关联起来;将对象的成员与对象关联起来;通过对象引用成员完成实际问题的解决通过对象引用成员完成实际问题的解决。主要内容主要内容1. 类声明和类体类声明和类体2. 类体的构成类体的构成3.构造方法与对象的创建构造方法与对象的创建4. 对象的引用与实体对象的引用与实体主要内容主要内容5. 成员变量成员变量6.6.方法方法7.7.方法重载方法重载8.t
6、his8.this关键字关键字9.9.包包10.import 10.import 语句语句11.11.访问权限访问权限类的声明与类体类的声明与类体在在语语法法上上,类类由由两两部部分分构构成成:类类声声明明和和类类体体。基本格式为:基本格式为: Specifier class extends 父类名父类名 implements 接口名接口名 类主体类主体其中,其中,修饰符Specifier可以是关键字可以是关键字public,abstract和和final中的一个或多个的组合。中的一个或多个的组合。class是定义类的关键字,是定义类的关键字,是所定义的类是所定义的类的名字,的名字,exten
7、ds表示该类继承了它的父类,父表示该类继承了它的父类,父类名指明父类的名称,类名指明父类的名称,implements表示类所实表示类所实现的接口,若实现多个接口则用逗号隔开。现的接口,若实现多个接口则用逗号隔开。类体的构成类体的构成Specifier 其中,修饰符其中,修饰符Specifier可以是关键字可以是关键字public,protected,private,final,static,transient和和volatile的一个或多个的组合。的一个或多个的组合。 ( parameterList ) throws /方法体方法体其中,其中,Specifier可以是可以是public,pro
8、tected,private,abstract和和static中的一个或多个的组合。中的一个或多个的组合。构造方法构造方法构造方法:与所在类名字完全一样的构造方法:与所在类名字完全一样的特殊特殊方法,方法,不能写返回值类型。不能写返回值类型。创建对象时必须使用构造方法初始化对象,不创建对象时必须使用构造方法初始化对象,不能被其它方法调用。能被其它方法调用。一个类可以有一个类可以有0个或多个构造方法,但必须保个或多个构造方法,但必须保证方法的参数不同(个数或类型不同)。证方法的参数不同(个数或类型不同)。类中没有构造方法时,使用缺省构造方法创建类中没有构造方法时,使用缺省构造方法创建对象;只自定
9、义参数构造方法时,只能用所对象;只自定义参数构造方法时,只能用所定义的方法创建对象;两者都有时,可以用定义的方法创建对象;两者都有时,可以用任意构造方法创建对象。任意构造方法创建对象。对象的创建对象的创建 =new 创建过程:创建过程:为成员变量分配内存空间;为成员变量分配内存空间;然后执行构造方法中的语句然后执行构造方法中的语句 ;给出一个信息,已确保这些成员变量是属于对给出一个信息,已确保这些成员变量是属于对象。象。对象的引用与实体对象的引用与实体对象对成员变量和成员方法的引用。对象对成员变量和成员方法的引用。对象之间的引用对象之间的引用。成员变量与方法成员变量与方法首先掌握首先掌握JAV
10、A程序在计算机中执行的流程。程序在计算机中执行的流程。类变量与实例变量的区别类变量与实例变量的区别类变量在类加载入内存时分配存储单元,实例变类变量在类加载入内存时分配存储单元,实例变量在创建对象时分配存储单元。量在创建对象时分配存储单元。类变量由所有对象共享,实例变量由对象各自占类变量由所有对象共享,实例变量由对象各自占有。有。类变量可以通过类名或者对象引用,实例变量只类变量可以通过类名或者对象引用,实例变量只能由对象引用。能由对象引用。成员变量与方法成员变量与方法类方法与实例方法的区别类方法与实例方法的区别类方法在类加载入内存时分配入口地址,实例方法类方法在类加载入内存时分配入口地址,实例方
11、法在创建对象时分配入口地址。在创建对象时分配入口地址。注意:注意:当创建第一个对象时,类中的实例方法就分当创建第一个对象时,类中的实例方法就分配了入口地址,当再创建对象时,不再分配入口地配了入口地址,当再创建对象时,不再分配入口地址。址。即方法的入口地址被所有对象共享。即方法的入口地址被所有对象共享。实例方法可以调用该类中实例方法或类方法;类方实例方法可以调用该类中实例方法或类方法;类方法只能调用该类的类方法,不能调用实例方法。法只能调用该类的类方法,不能调用实例方法。实例方法可以操作所有成员变量;而类方法只能操实例方法可以操作所有成员变量;而类方法只能操作类变量不能操作实例变量。作类变量不能
12、操作实例变量。类方法可以被类和对象引用,实例方法只能被对象类方法可以被类和对象引用,实例方法只能被对象引用引用方法的重载方法的重载方法重载是指一个类中可以有多个方法具有相方法重载是指一个类中可以有多个方法具有相同的名字,但这些同的名字,但这些方法的参数必须不同方法的参数必须不同,即,即或者是参数的个数不同,或者是参数的类型或者是参数的个数不同,或者是参数的类型不同。不同。This关键字关键字理解理解JAVA变量的作用域变量的作用域This代表代表当前正在创建或者使用的对象当前正在创建或者使用的对象,主要,主要作用在于:当局部变量与成员变量发生冲突作用在于:当局部变量与成员变量发生冲突时,使成员
13、变量的作用域扩展到局部区域。时,使成员变量的作用域扩展到局部区域。包的创建包的创建package 包的创建包的创建用用javac 编译源文件后,将生成的编译源文件后,将生成的class字节码文件拷贝到相应的包中。字节码文件拷贝到相应的包中。用用javac d 编译源文件,直编译源文件,直接将生成的接将生成的class字节码文件生成在相应包中。字节码文件生成在相应包中。包的引用包的引用import .引用引用先设置环境变量先设置环境变量classpath,添加包的路径。,添加包的路径。使用使用import应用包中的类。应用包中的类。注意:包中的类、成员变量与方法必须满足访问注意:包中的类、成员变
14、量与方法必须满足访问控制要求。控制要求。访问控制访问控制public:类可以被其他所有类访问;成员变量类可以被其他所有类访问;成员变量和方法可以被任何程序直接访问和修改。和方法可以被任何程序直接访问和修改。protected:可以被成员变量与方法所在的类、可以被成员变量与方法所在的类、同一个包中的其他类和其他包中该类的子类同一个包中的其他类和其他包中该类的子类可以访问和应用。可以访问和应用。默认修饰符(友好的):默认修饰符(友好的):可以被所在的类、同可以被所在的类、同一包中的其他类访问和引用一包中的其他类访问和引用private:修饰成员变量和方法时,只能被定修饰成员变量和方法时,只能被定义
15、它们的类访问和调用;其他类都不能获取,义它们的类访问和调用;其他类都不能获取,但可以借助该类的方法来操作。但可以借助该类的方法来操作。练习讲解练习讲解使用使用for循环计算循环计算8+88+888+8888+的前的前10项之和。项之和。分析:分析:sum=0,n=8;sum=sum+n;改变改变n的值。的值。public class Sum public static void main(String args) int i,sum=0,n=8; for(i=1;i10;i+) sum=sum+n; n=n*10+8; /end for System.out.println(“sum=”+su
16、m); /end main/end class如果要求用面向对象思想编写程序呢?练习讲解练习讲解编写程序计算编写程序计算100-999之间的之间的水仙花数水仙花数(水仙(水仙花数是指一个三位数,其各个数之立方和等花数是指一个三位数,其各个数之立方和等于该数,例如于该数,例如153,即为一水仙花数,因为,即为一水仙花数,因为153=13+53+33)。)。分析:分析:1、用三重循环的嵌套。、用三重循环的嵌套。2、分别求出个、十、百位上的数字然后计算求解、分别求出个、十、百位上的数字然后计算求解public class Sxh public static void main(String args
17、) int i,j,k; for(i=1;i=9;i+) for(j=0;j=9;j+) for(k=0;k=9;k+) if(i*i*i+j*j*j+k*k*k)=(i*100+j*10+k) System.out.println(“水仙花数水仙花数:”+ i*100+j*10+k); /end main/end class练习讲解练习讲解编写一个类编写一个类,该类封装了一元二次方程共有的,该类封装了一元二次方程共有的属性和功能,即该类有刻画方程系数的属性和功能,即该类有刻画方程系数的3个成个成员变量以及计算实根的方法。要求:员变量以及计算实根的方法。要求:该类的该类的所有对象共享常数项所有
18、对象共享常数项。编写两个类编写两个类:A和和B,类,类A创建的对象可以计创建的对象可以计算两个正整数的最大公约数,类算两个正整数的最大公约数,类B创建的对象创建的对象可以计算两个数的最小公倍数。要求类可以计算两个数的最小公倍数。要求类B的一的一个成员变量是类个成员变量是类A的对象。的对象。练习讲解练习讲解编写两个类编写两个类放在同一程序中,分别完成求两个放在同一程序中,分别完成求两个数的最大值,最小值;要求将它们放在同一数的最大值,最小值;要求将它们放在同一个包中,然后再编写一个个包中,然后再编写一个程序去引用它程序去引用它,完,完成求三个整数的最大值、最小值。成求三个整数的最大值、最小值。将
19、以上求将以上求最大值最大值和和最小值最小值作为两个类(两个不作为两个类(两个不同的程序)放在同一包中,然后用同的程序)放在同一包中,然后用程序引用程序引用它。它。课堂练习课堂练习1编译编译JavaApplet 源程序文件产生的字节码源程序文件产生的字节码文件的扩展名为文件的扩展名为()A、java B、class C、html D、exe2main方法是方法是JavaApplication程序执行的入程序执行的入口点,关于口点,关于main方法的方法头以下哪项是合方法的方法头以下哪项是合法的()?法的()?A、public static void main( )B、public static
20、void main( Stringargs )C、public static int main(String arg )D、public void main(Stringarg )BB4下列哪个是合法的下列哪个是合法的Java标识符?()标识符?()A、Tree&Glasses B、classC、_$theLastOne D、273.55Java的字符类型采用的是的字符类型采用的是Unicode编码方案,编码方案,每个每个Unicode码占用()个比特位码占用()个比特位A、8 B、16 C、32 D、646下面哪一种是基本类型标识符下面哪一种是基本类型标识符()A、byte B、String
21、 C、array D、interfaceCBA7在编写在编写JavaApplication程序时,若需要使用到标程序时,若需要使用到标准输入输出语句,必须在程序的开头写上准输入输出语句,必须在程序的开头写上()语句语句A、import java.awt.* ; B、import java.applet.Applet ;C、import java.io.* ; D、import java.awt.Graphics ;8对于构造函数,下列叙述不正确的是()对于构造函数,下列叙述不正确的是()A、构造函数是类的一种特殊函数,它的方法名必须与、构造函数是类的一种特殊函数,它的方法名必须与类名相同。类名
22、相同。B、构造函数的返回类型只能是、构造函数的返回类型只能是void型。型。C、构造函数的主要作用是完成对类的对象的初始化工、构造函数的主要作用是完成对类的对象的初始化工作。作。D、一般在创建新对象时,系统会自动调用构造函数。、一般在创建新对象时,系统会自动调用构造函数。CD课堂练习课堂练习完成完成JAVA猜数游戏猜数游戏设计:给你一个设计:给你一个1至至100之之间的整数间的整数,请猜测这个数。请猜测这个数。按模板要求按模板要求,将,将【代码代码1】【代码代码6】替换为替换为Java程序代码。程序代码。 分析分析随机产生一个整数。随机产生一个整数。输入猜测的数字,然后判断是否相等,如果大于,输入猜测的数字,然后判断是否相等,如果大于,则提示大了,并要求继续猜测;如果小于,则提则提示大了,并要求继续猜测;如果小于,则提示小了,并要求继续猜测;等于,则输入示小了,并要求继续猜测;等于,则输入”猜对猜对了了“,程序结束。,程序结束。