您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > linux/Unix相关 > 清华大学张思民Java课件第3章
Java语言程序设计第3章面向对象程序设计基础主讲:张思民清华大学本章主要内容•3.1面向对象的基本概念•3.2类与对象•3.2.1定义类•3.2.2成员方法•3.3对象•3.4面向对象特性•3.4.1封装性•3.4.2继承性•3.4.3多态性•3.4.4其它修饰符的用法•3.5接口和包•3.5.1接口•3.5.2包•3.5.3压缩文件.jar3.1面向对象的基本概念•1、对象的基本概念•对象是系统中用来描述客观事物的一个实体,它是构成系统的一个基本单位。现实世界中的对象有两个共同特征:形态和行为。图3.2软件对象的变量和方法2、类的基本概念•类用class作为它的关键字,例如我们要创建一个汽车类,则可表示为:用类创建对象—实例化•当我们要通过汽车类来创建一个轿车对象,并使用它的刹车行为方法时,则要用下面的格式进行实例化:•//实例化汽车对象•汽车轿车=new汽车();•//引用汽车对象的刹车方法•轿车.刹车();3.2类与对象类和对象是Java的核心和本质。它们是Java语言的基础,编写一个Java程序,在某种程度上来说就是定义类和创建对象。定义类和建立对象是Java编程的主要任务。3.2.1定义类•1、类的一般形式类由类声明和类体组成,而类体又由成员变量和成员方法组成(如图3.3所示):一个具体的类2、类声明类声明由四部分组成:类修饰符、类关键字class、声明父类、实现接口,其一般形式如下:[public][abstract|final]class类名[extends父类名][implements接口列表]{……}各组成部分的具体说明•(1)类修饰符•public:这个public关键字声明了类可以在其他类中使用。缺省时,该类只能被同一个包中的其他类使用。•abstract:声明这个类为抽象类,即这个类不能被实例化。•final:声明该类不能被继承,即不能有子类。也就是说,不能用它通过扩展的办法来创建新类。•(2)类的关键字class•在类声明中,class是声明类的关键字,表示类声明的开始,类声明后面跟着类名,按习惯类名要用大写字母开头,并且类名不能用阿拉伯数字开头。给类名命名时,最好取一个容易识别且有意义的名字,避免A、B、C之类的类名。(3)声明父类extends为声明该类的父类,这表明该类是其父类的子类。一个子类可以从它的父类继承变量和方法。extends只能实现单继承。创建子类格式:classsubclassextends父类名{…}•(4)实现接口•在类声明中使用关键字implements实现接口,当要实现有多个接口时,各接口名以逗号分隔,其形式为:•implements接口1,接口2,···,···•接口是一种特殊的抽象类,这种抽象类中只包含常量和方法的定义,而没有变量和方法的实现。一个类可以实现多个接口,以某种程度实现“多继承”。3、成员变量和局部变量成员变量(在类体中定义,在整个类中都有效);局部变量(在方法中定义,只在本方法中有效)。变量(1)成员变量最简单的成员变量声明的形式为:类型成员变量名;(2)局部变量在方法中声明的变量以及方法中的参数称为局部变量。(3)如果局部变量名与成员变量名相同,则成员变量被屏蔽。成员变量与局部变量classData{intx=12,y=5;publicvoidsum(){ints;s=x+y;}}x、y是成员变量,类中所有方法都可以使用它们s是局部变量。仅限于在sum()方法内部使用。如果局部变量名与成员变量名相同,则成员变量被屏蔽。classData{intx=12,y=5;publicvoidsum(){intx=3;//局部变量x屏蔽了成员变量ints;s=x+y;}}3.2.2成员方法在Java中,必须通过方法才能完成对类和对象的属性操作。成员方法只能在类的内部声明并加以实现。一般在类体中声明成员变量之后再声明方法。1、方法声明返回类型方法名(形式参数){······//方法体内容}•(1)方法名方法声明包括方法名、返回类型和参数。•(2)方法体方法体是一对大括号“{}”之间的内容。【例3-1】教材P59图3.7方法声明与调用的运行结果方法重载•方法重载是指多个方法享有相同的名字,但是这些方法的参数必须不同,或者是参数的个数不同,或者是参数类型不同。返回类型不能用来区分重载的方法。【例3-2】教材P60图3.8重载与调用关系3.3对象•类是一个抽象的概念,而对象是类的具体化。类通过实例化生成对象。•一个对象的生命周期包括三个阶段:创建、使用和释放。1、对象的创建•创建对象的一般格式为:类名对象名=new类名([参数列表]);(1)对象声明:类名对象名;(2)实例化:对象名=new构造方法();2、对象的使用类是不能直接使用的,我们只能类实例化后的对象。而对象的使用是通过访问对象变量或调用对象方法。通过运算符“.”可以实现对对象的变量访问和方法的调用。(1)访问对象的变量访问格式:对象名.成员变量;例如,设有一个A类其结构如下:classA{intx;}对变量x赋值,先创建并实例化类A的对象a,然后再通过对象给变量x:Aa=newA();a.x=5;(2)调用对象的方法调用格式:对象名.方法名([参数列表]);【例3-5】用带参数的成员方法计算长方体的体积。3.4面向对象特性•java语言中有三个典型的面向对象的特性:封装性、继承性和多态性。关于继承性【例3-7】创建一个A类和它的子类B类,我们通过子类B的实例对象调用从父类A继承的方法。(教材P68)3.5接口和包3.5.1接口•接口是抽象类的一种,只包含常量和方法的定义,而没有变量和具体方法的实现。1、接口的定义接口的定义包括接口声明和接口体。接口定义的格式如下:[public]interface接口名[extends父接口名]{…//接口体}2、接口的实现•在类的声明中用implements子句来表示一个类使用某个接口,在类体中可以使用接口中定义的常量,而且必须实现接口中定义的所有方法。•一个类可以实现多个接口,在implements子句中用逗号分开。3.5.2包package和import语句•Package用于指出class文件路径packageclass文件路径;Import用于引用包的类一个包中通常有多个类,就用*号代替Import语句•import类似于C中的include语句•Importjava.io.*;•Importjava.applet.*;包package•包不仅是命名空间机制,也是访问控制机制。Java通过包,将命名空间分隔成很多独立的小块,一组相关的类和接口存放在一个独立的包内,从而和其它包中的类或接口区分开。包的使用•第一步——建立和包同名的目录。包和文件系统目录一一对应,有一个包,就有一个和其对应的文件系统目录。包内的所有类或接口都必须在与包同名的目录下。•第二步——在类或接口所在文件的最前面声明类或接口所在的包。包的声明格式如下:•package包名1.包名2.…….包名n;引用包•通过import将包引入程序中,其格式如下:import包名1.….包名n.类名;•或import包名1.….包名n.*;Java自动引入的包•当前包。•缺省包,缺省包是无名包。•java.lang包,Java基本的语言功能保存在这个包中Package语句•publicclassb•{publicvoidprint()•{System.out.println(packagetest);}•}例1:publicclassa{publicstaticvoidmain(Stringargs[]){bb1=newb();b1.print();}}编译a.java则自动产生a.class和b.class例2:在当前建立目录:abc\xyz.•Importabc.xyz.*;•publicclassa•{publicstaticvoidmain(Stringargs[])•{bb1=newb();•b1.print();}•}Packageabc.xyz;publicclassb{publicvoidprint(){System.out.println(packagetest);}}把b.java保存到abc\xyz目录下a.java保存在当前目录3.5.3压缩文件•1、将类压缩为jar文件•在Java提供的工具集bin目录下有一个jar.exe文件,它可以把多个类的字节码文件打包压缩成一个jar文件,然后将这个jar文件存放到Java运行环境的扩展框架中,即将该jar文件存放在JDK安装目录的jre\lib\ext下,这样,其他的程序就可以使用这个jar文件中的类来创建对象了。例:设有Test1.class和Test2.class,我们要将它们压缩成一个jar文件Test.jar。(1)编写Manifest.mf清单文件Mainfest–Version:Main-Class:Test1Test2(注意Main-Class:与后面的类名之间要有一个空格,且最后一行要回车换行)。将其保存为Manifest.mf。•(2)生成jar文件•jarcfmTest.jarManifest.mfTest1.classTest2.class•其中参数c表示要生成一个新的jar文件,f表示要生成的jar文件的文件名,m表示清单文件的文件名。2、将应用程序压缩为jar文件•我们还可以用jar.exe将应用程序生成可执行文件。在Windows环境下,我们可用鼠标双击该文件,就可以运行该应用程序。•其生成jar文件的步骤与前面生成类的jar文件相同。当要压缩多个类时,我们在清单文件中只要写出主类的类名,设有主类A.class,则:•Mainfest–Version:•Main-Class:A•生成jar文件时,也可以使用通配“*.class”。•jarcfmTest.jarManifest.mf*.class本章结束!
本文标题:清华大学张思民Java课件第3章
链接地址:https://www.777doc.com/doc-7028051 .html