类对象和接口.ppt
《类对象和接口.ppt》由会员分享,可在线阅读,更多相关《类对象和接口.ppt(93页珍藏版)》请在三一办公上搜索。
1、第四讲 类、对象和接口,第四讲 类、对象和接口,4.11 abstract 类和abstract方法4.12 super关键字4.13 接口4.14 内部类4.15 匿名类4.16 异常类4.17 Class类4.18 基本类型的类包装4.19 反编译和文档生成器4.20 jar文件,第四讲 类、对象和接口,一、教学目的 理解类、对象和接口之间的关系,熟练掌握类的设计方法、对象的使用方法,接口的定义方法,熟练运用实例成员和类成员编写程序,了解包的基本使用方法。二、教学内容:本章主要介绍类和对象之间的关系,握类的设计方法、对象的使用方法,以及包的基本使用方法。,第四讲 类、对象和接口,三、重点及
2、难点内容:重点:1、仔细体会面向对象编程的思想;2、熟练理解类和对象的概念,理解面向对象的特性;3、会编写简单的类,逐渐掌握面向对象编程的方法。四、难点:面向对象编程思想的建立。,第四讲 类、对象和接口,四、课前思考 1、什么是对象?什么是类?2、面向对象编程的特性有哪三个?它们各自又有哪些特性?3、你知道java语言在面向对象编程方面有何独特的特点吗?,4.1编程语言的几个发展阶段,1、机器语言(汇编语言)计算机处理信息的早期语言是所谓的机器语言,这种语言中的指令都是由0,1组成的序列,称这样的序列为一条机器指令。2、过程语言(C语言)面向过程语言把代码组成叫做过程或函数的块。每个块的目标是
3、完成某个任务,例如,一个C的源程序就是由若干个书写形式互相独立的函数组成。3、面向对象语言(JAVA,C+)面向对象编程更符合人的思维模式,主要体现在以下三个特性上。,4.1编程语言的几个发展阶段,1)封装性 封装是面向对象编程的核心思想之一,就是将数据和对数据的操作封装在一起,也就是一个对象将自己的数据和对这些数据的操作合理有效地封装在一起。封装将类的外部界面与类的功能实现区分开来,隐藏实现细节,(通过公共方法)保留有限的对外接口,迫使用户使用外部界面,通过访问接口实现对数据的操作。即使实现细节发生了改变,也还可通过界面承担其功能而保留原样,确保调用它的代码还继续工作。这使代码维护更简单。,
4、4.1编程语言的几个发展阶段,2)继承 3)多态 多态是面向对象编程的有一个重要特征。多态有两种含义:一种是:操作名称的多态,即有多个操作具有相同的名字,但这些操作所接收的消息类型必须不同(在JAVA中体现在方法重载上)。另一种:是和继承有关的多态,是指同一个操作被不同类型对象调用时可能产生不同的行为。例如:狗和猫都喊叫,狗发出的是“汪汪”而猫是“喵喵”(在JAVA中体现在覆盖上)。,4.2类,类是Java的核心,也是类是组成Java程序的基本要素。类封装了一类对象的状态和方法。类是用来定义对象的模板。类是对具有相同属性和方法的一组相似对象的抽象,或者说类是对象的模板。类的实现包括两部分:类声
5、明和类体。,4.2类,1、类声明 类的声明格式如下:修饰符 class extends 父类名 implements 接口名 类主体 class People,4.2类,2、类体 1)写类的目的是为了描述一类事物共有的属性和功能,描述过程由类体来实现。类声明之后的一对大括号“”,“”以及它们之间的内容称做类体,大括号之间的内容称做类体的内容。2)类体的内容由两部分构:一部分是变量的定义,用来刻画属性;另一部分是方法的定义,用来刻画功能。,4.2类,3)声明成员变量的格式为:修饰符 声明成员方法的格式为:(参数列表)throws 方法体,4.2类,class 梯形 float 上底,下底,高,l
6、aderArea;/变量定义部分 float 计算面积()/方法定义 laderArea=(上底+下底)*高/2.0f;return laderArea;void 修改高(float h)/方法定义 高=h;,4.2类,3、成员变量和局部变量 1)我们已经知道类体分为两部分。变量定义部分所定义的变量被称为类的成员变量。在方法体中定义的变量和方法的参数被称为局部变量。2)成员变量在整个类内都有效,局部变量只在定义它的方法内有效。3)成员变量又分为实例成员变量(简称实例变量)和类变量(也称静态变量)。如果成员变量的类型前面加上关键字static,这样的成员变量称做是类变量或静态变量。,4.2类,4
7、)如果局部变量的名字与成员变量的名字相同,则成员变量被隐藏,即这个成员变量在这个方法内暂时失效。5)如果局部变量的名字与成员变量的名字相同,则成员变量被隐藏。这时如果想在该方法内使用成员变量,必须使用关键字this。,4.2类,4、方法 方法的定义包括两部分:方法声明和方法体。一般格式为:方法声明部分 方法体内容 1)方法声明 最基本的方法声明包括方法名和方法类型。当方法不需要返回数据时,方法的类型必须是void。,4.2类,2)方法体 方法声明之后的一对大括号以及之间的内容成为方法的方法体。方法体的内容包括局部变量的定义和合法的Java语言。3)方法参数在整个方法内有效,方法内定义的局部变量
8、从它定义的位置之后开始有效。如果局部变量的定义是在一个复合语句中,那么该局部变量的有效范围是该复合语句,即仅在该复合语句中有效,如果局部变量的定义是在一个循环语句中,那么该局部变量的有效范围是该循环语句,即仅在该循环语句中有效。,4.2类,5、方法重载 方法重载的意思是:一个类中可以有多个方法具有相同的名字,但这些方法的参数必须不同,即或者是参数的个数不同,或者是参数的类型不同。重载是Java 实现多态性的一种方式。有两个规则适用于重载方法:调用语句的参数表必须有足够的不同,以至于允许区分出正确的方法被调用。方法的返回类型可以各不相同,但它不足以使返回类型变成唯一的差异。重载方法的参数表必须不
9、同。,class Area float getArea(float r)return 3.14f*r*r;double getArea(float x,int y)return x*y;float getArea(int x,float y)return x*y;double getArea(float x,float y,float z)return(x*x+y*y+z*z)*2.0;,4.2类,6、构造方法 1)构造方法是一种特殊方法,用来对对象进行初始化。2)它的名字必须与它所在的类的名字完全相同,而且没有类型,甚至连表示无返回值的空类型(void)也没有。构造方法一般应定义为publi
10、c构造方法也可以重载 3)一般而言,每个类都至少有一个构造函数。如果程序员没有为类定义构造函数,Java虚拟机会自动为该类生成一个默认的构造函数。4)要特别注意的是,如果程序员定义了一个或多个构造函数,则自动屏蔽掉默认的构造函数。(详见例程),5)构造方法重载示例 public class Employee private String name;private int salary;public Employee(String n,int s)name=n;salary=s;public Employee(String n)this(n,0);public Employee()this(Un
11、known);,4.2类,7、类方法和实例方法说明:1)类中的方法分为实例方法和类方法。2)方法声明时,方法类型前面不加关键字static的是实例方法、加关键字static的是类方法。3)构造方法是特殊的方法,不能用static修饰构造方法。4)实例方法既能对类变量操作也能对实例变量操作,而类方法只能对类变量进行操作。5)一个类中的方法可以互相调用,实例方法可以调用该类中的其他方法;类方法只能调用类方法,不能调用实例方法。,4.3对象,类是创建对象的模板。当使用一个类创建了一个对象时,我们也说我们给出了这个类的一个实例。1、创建对象 创建一个对象包括对象的声明和为对象分配内存两个步骤。(1)对
12、象的声明。一般格式为:类的名字 对象名字;如:People zhangPing;,4.3对象,(2)为声明的对象分配内存 使用new运算符和类的构造方法为声明的对象分配内存,如果类中没有构造方法,系统会调用默认的构造方法(默认的构造方法是无参数的)。如:zhangPing=new People();(3)对象的内存模型 见下例:,class XiyoujiRenwu float height,weight;String head,ear,hand,foot,mouth;void speak(String s)System.out.println(s);class A public static
13、 void main(String args)XiyoujiRenwu zhubajie;/声明对象 zhubajie=new XiyoujiRenwu();/为对象分/配内存,使用new 运 算 符和默认的构造方法,4.3对象,当用XiyoujiRenwu类声明一个变量,即对象zhubajie时,对象时的内存模型如下:XiyoujiRenwu zhubajie;,4.3对象,当系统见到:zhubajie=new XiyoujiRenwu();时,就会做两件事:为height,weight,head,ear,mouth,hand,foot各个变量分配内存,即XiyoujiRenwu类的成员变量
14、被分配内存空间,然后执行构造方法中的语句。new运算符在为变量height,weight,head,ear,mouth,hand,foot分配内存后,将返回一个引用给对象变量zhubajie(分配实体后的内存模型如下:)。,4.3对象,4.3对象,2、对象的使用 1)对象不仅可以操作自己的变量改变状态,而且还拥有了使用创建它的那个类中的方法的能力,对象通过使用这些方法可以产生一定的行为。2)通过使用运算符“.”,对象可以实现对自己的变量访问和方法的调用。3)当对象调用方法时,方法中出现的成员变量就是指该对象的成员变量(见例4.3)。对象名成员变量名 对象名成员方法名(),4.3对象,3、对象的
15、引用和实体 1)当用类创建一个对象时,类中的成员变量被分配内存空间,这些内存空间称做该对象的实体,而对象中存放着引用,以确保实体由该对象操作使用。2)一个类创建的两个对象,如果具有相同的引用,那么就具有完全相同的实体。3)没有实体的对象称作空对象,空对象不能使用,即不能让一个空对象去调用方法产生行为。,4.3对象,4.3对象,4.3对象,4、参数传值 在Java语言中,向方法传递参数的方式是“按值传递”。按值传递意味着当将一个参数传递给一个方法时,首先创建了源参数的一个副本并将这个副本传入了方法,这样方法接收的是原始值的一个副本。因此,即使在方法中修改了该参数,那仅仅是改变副本,而源参数值保持
16、不变。1)基本数据类型参数的传值 对于基本数据类型的参数,向该参数传递的值的级别不可以高于该参数的级别,比如,不可以向int型参数传递一个float值,但可以向double型参数传递一个float值。,4.3对象,2)引用类型参数的传值 Java的引用型数据包括对象、数组和接口。当参数是引用类型时,“传值”传递的是变量的引用而不是变量所引用的实体。当使用对象实例作为参数传递给方法时,参数的值是对对象的引用。也就是说,传递给到方法内部的是对象的引用值而不是对象的内容。在方法内这个引用值不会被改变。但如果通过该引用值修改了所指向的对象的内容,则方法结束后,所修改的对象内容可以保留下来。(详见例程和
17、课本例4.5),4.4 static关键字,在一个类中,使用static修饰的变量和方法分别称为类变量(或称静态变量)和类方法(或称静态方法),没有使用static修饰的变量和方法分别称为实例变量和实例方法。1、实例变量和类变量的区别 一个类通过使用new运算符可以创建多个不同的对象,不同的对象的实例变量将被分配不同的内存空间,如果类中的成员变量有类变量,那么所有的对象的这个类变量都分配给相同的一处内存,改变其中一个对象的这个类变量会影响其它对象的这个类变量。,4.4 static关键字,类变量是和该类创建的所有对象相关联的变量,改变其中一个对象的这个类变量就同时改变了其它对象的这个类变量。因
18、此,类变量不仅可以通过某个对象访问也可以直接通过类名访问。实例变量仅仅是和相应的对象关联的变量,也就是说,不同对象的实例变量互不相同,即分配不同的内存空间,改变其中一个对象的实例变量不会影响其它对象的这个实例变量。实例变量可以通过对象访问,不能使用类名访问。,4.4 static关键字,、实例方法和类方法的区别 实例方法可以被类创建的任何对象调用执行。而类方法不仅可以被类创建的任何对象调用执行,也可以直接通过类名调用。总结:1、类成员属于这个类而不是属于这个类的某个对象。,4.4 static关键字,2、对于类成员,既可以使用对象进行访问,也可以使用类名直接进行访问,并且在类方法中只能访问类成
19、员,而不能访问实例成员。3、实例成员由每一个对象个体独有,对象的存储空间中的确有一块空间用来存储该成员。对于实例成员,只能通过对象来访问,不能通过类名进行访问。4、在实例方法中,既可以访问实例成员,也可以访问类成员。,4.5 this关键字,有关this的几点描述:1)this是Java的一个关键字,表示某个对象。2)this可以出现在实例方法和构造方法中,但不可以出现在类方法中。3)this关键字出现在类的构造方法中时,代表使用该构造方法所创建的对象。4)this关键字出现在类的实例方法中时,代表正在调用该方法的当前对象。,4.5 this关键字,5)需要注意的是,当一个变量被声明为stat
20、ic时,是不能用this来指向的,因为this指向某一具体对象,不能用来指示类本身。6)this还可以用在某个构造函数的第一句,用来调用该类的另一个构造函数。,4.6 包,1、包语句 1)包的概念 包:是Java提供的文件组织方式。为了便于管理大型软件系统中数目众多的类,解决类命名冲突的问题,Java引入了包(package)。一个包中可以包括很多类文件,包中还可以有子包,形成包等级。使用包不仅方便了类文件的管理,而且扩大了Java命名空间。,4.6 包,2)包的创建 创建包的语法格式为:Package;例如:package myPackage;也可以创建包的层次。例如:package myP
21、ackage.secondPackage;,4.6 包,3)package语句的进一步说明(1)package语句必须是文件中的第一条语句。也就是说,在package语句之前,除了空白和注释之外不能有任何语句。(2)如果不加package语句,则指定为缺省包或无名包。(3)包对应着文件系统的目录层次结构。(4)在package语句中,用“.”来指明包(目录)的层次。,4.6 包,例:package myPackage;public class HelloWorldpublic static void main(String args)System.out.print(Hello World!)
22、;,4.6 包,2、import语句 在编写源文件时,除了自己编写类外,我们经常需要使用Java提供的许多类,这些类可能在不同的包中,而使用import 语句可以引入包中的类。import 语句的使用方式如下:1)引入包中的类。import java.io.File;2)引入整个包。import java.io.*;3)在同一包中的类可以互相引用,无需import语句。,4.7访问权限,1、访问控制修饰符简介 访问控制修饰符说明类或类的成员的可访问范围。1)public 用public修饰的类或成员拥有公共作用域,表明此类或类的成员可以被任何Java中的类所访问,是最广泛的作用范围。2)pro
23、tected 用protected修饰的变量或方法拥有受保护作用域,可以被同一个包中所有的类及其他包中该类的子类所访问。,4.7访问权限,3)private 用private修饰的变量或方法拥有私有作用域,只能在此类中访问,在其他类中,包括该类的子类中也是不允许访问的,private是最保守的作用范围。4)friendly(默认)没有使用任何修饰符的,拥有默认访问权限(也称友好访问权限),表明此类或类的成员可以被同一个包中的其它类访问。,4.7访问权限,2、私有变量和私有方法 一个类在另外一个类中创建一个对象后,该对象不能访问自己的私有变量和私有方法 对于一个类的私有类变量(静态成员变量),那
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 对象 接口
![提示](https://www.31ppt.com/images/bang_tan.gif)
链接地址:https://www.31ppt.com/p-6372964.html