-
- 素材大小:
- 3.23 MB
- 素材授权:
- 免费下载
- 素材格式:
- .ppt
- 素材上传:
- lipeier
- 上传时间:
- 2018-12-06
- 素材编号:
- 219175
- 素材类别:
- 课件PPT
-
素材预览
这是java类与对象ppt,包括了类和对象,对象的成员,类的成员,构造函数,重载,类的继承,方法覆盖,多态性与动态绑定,Java访问权限等内容,欢迎点击下载。
java类与对象ppt是由红软PPT免费下载网推荐的一款课件PPT类型的PowerPoint.
第3章 Java类和对象本章主要内容类和对象对象的成员类的成员构造函数重载类的继承方法覆盖多态性与动态绑定 Java访问权限 3.1 类和对象 3.1.1 面向对象程序设计概述 Java作为90年代新出现的面向对象的编程语言,其语言特点充分体现出面向对象的思想。 面向对象程序设计(简称OOP)是当今主流的程序设计范型,它已经取代了70年代的“结构化”过程化程序设计开发技术。 3.1.2 类类是一个模板或蓝本。 在面向对象概念中,类(class)是既包括数据又包括作用于数据的一组操作的封装体。 代码清单3-1 3.1.3 对象一个对象是类的一个实例。要使用OOP,需要了解对象的三个主要特性,分别是:对象的行为(behavior)——对象能做什么,或者说,能对对象施加什么方法?对象的状态(state)——对对象施加方法时,对象如何反应? 对象的身份(identity)——对象如何与具有相同行为、状态的其他对象相互区别? 3.1.4 类之间的关系类与类之间最常见的关联有:依赖(“use-a”) 聚合(“has-a”) 继承(“is-a”) 类是组成JAVA程序的基本要素。一个java程序由若干个类组成。类的定义包括两部分:类声明和类体。基本格式如下: class 类名 { 类体部分; } 在基本格式的基础之上,一般情况下,类的定义格式如下: [public] class 类名 { [成员变量] [构造方法] [方法] } 例如: class Point { int x, y; void init(int a, int b) { x = a; y = b; } } 3.1.6 声明对象类是对象创建的模板。任何一个对象都是属于某一个类的。 使用对象之前必须先创建对象。即,先进行声明,再实例化对象,之后就可以通过对象去调用成员变量或方法了。 要获得一个类的对象需要两步:第一步,对象的声明。类型 对象名;第二步,为对象分配内存。通过new运算符调用构造方法创建对象实体,并把该对象的引用赋给该变量。对象名=new 构造方法名( [参数列表] ); 如声明Point类型的对象: Point mypoint = new Point(); 或 Point mypoint; // 声明对象的引用 mypoint = new Point(); // 创建Point类的对象对象的内存模型 实例成员与类成员 JAVA的类中可以包括两种成员:实例成员和类成员。 通过对象去访问实例成员变量和调用实例方法。通过类名可以直接访问类成员变量和调用类成员方法。 3.2 对象的成员 3.2.1 方法方法定义的一般格式如下: [修饰符] 返回类型 方法名( [形参列表] ) { //方法体,由若干的语句组成 } 其中的修饰符可以是public 、protected、private、默认(不写),用于定义它的访问控制权限,还可以是static 、final等。 3.2.1 方法在定义和使用方法时,需要注意以下几点:方法是一个功能模块,类似C中的函数;方法和实例变量都必须定义在类内,方法是类的功能接口;定义方法的原则:方法应当只执行单一的任务,并且方法名能有效地表达该任务;方法的返回值类型、方法名和参数表共同称之为方法的特征。 3.2.1 方法调用方法的格式为: 对象引用.方法名(参数表); 例如, Point mypoint = new Point(); mypoint.init(10, 20); 3.2.2 实例变量成员变量,即我们所说的属性。它的定义的一般格式如下: [修饰符] 类型 变量名;其中:类型可以是基本数据类型(primitive types),也可以是复合数据类型(reference types)。修饰符可以是:public 、protected、private、默认(不写),static,final。 成员变量含有自带的初值,根据不同类型有所不同,int为0,double为0.0,bealoon为false,复合数据类型为null。 成员变量在整个类内都有效,其有效性与它在类体中书写的先后位置无关。 代码清单3-2 代码清单3-3 区分实例变量和局部变量实例变量属于对象,它描述了对象的属性局部变量只在方法内有效。形参在整个方法内有效;方法内的局部变量从声明它的位置开始有效。局部变量在使用前必须赋初值(没有默认值)。如果局部变量与实例变量同名,则实例变量在该方法内被隐藏,用this来引用。 3.3 类的成员 类方法不仅可以被该类创建的任何对象调用执行,也可以直接通过类名调用。 JAVA规定:类方法中出现的成员变量必须是类变量。 所以类方法中不能操作实例成员变量这是因为: 在类创建对象之前,实例成员变量还没有分配内存;类方法中可不能直接调用其它实例方法,这是因为在类创建对象前,实例方法还没有分配入口地址。 当声明一个成员变量时,有static标识的是类成员变量,没有的是实例成员变量。例如, class Takecare { static int x; //类成员变量 int y; //实例成员变量 } 3.4 构造函数构造方法是类中一种特殊方法,用于创建类的实例并初始化对象。 JAVA规定,构造方法的名字必须与它所在类的类名完全相同。 构造函数的任务就是初始化一个对象的内部状态,以便使创建的实例变量能够完全初始化,可以被对象马上使用。 构造方法定义的格式如下: [访问控制符] 构造方法名( [参数列表] ) { //一般定义对成员变量的初始化 } 其中,访问控制符可以是public 、protected、private、默认(不写)。 注意: 1.构造方法无返回类型。 2.构造方法只能被new运算符调用。 new 构造方法名( [参数列表] ); 3.4.1 无参构造函数 3.4.2 带参数的构造函数 见代码清单3-8 强调两点:一旦定义了构造函数,Java就不能再调用系统缺省构造函数;当有多个构造函数时,通过构造函数参数的类型和个数来决定调用哪个。 3.5 重载多态性提供了类中方法执行的多样性,它有两种表现形式:重载(overload)和重写(override)。 一个类中,如果有许多同名的方法带有不同的参数列表,称为方法的重载(overload)。 方法的重载必须满足以下条件:(1)在同一个类当中定义的方法;(2)方法名必须相同;(3)参数列表必须不同(参数类型、参数个数)。注意,仅仅返回类型的不同或访问控制权限不同,不能构成重载。 3.5.1 一般方法重载 代码清单3-9 3.5.2 构造函数重载构造函数也能够重载。 代码清单3-12 重载是编译时多态性,即在编译时就能够确定对象调用的是同名方法中哪一个。依据正是实参的类型与个数。 但要避免重载出现歧义。 3.6 类的继承继承是一种由已有的类创建新类的机制。利用继承,可以使子类得到父类的某些成员。继承是实现软件可重用性的一种重要方式,继承增强了软件的可扩充性,提高了软件的可维护性。 JAVA中类的继承是单重继承,即每个子类只有一个直接父类。 JAVA中定义,Object类是所有类的父类。 子类定义的格式: [访问权限控制符] class 子类名 extends 父类名 [implements 接口列表] { //类体部分 } 继承的原则: ①子类继承父类的除private以外的成员,包括实例成员和static成员。 ②子类继承不了父类的构造方法。 ③子类可以创建自己的成员。 ④子类可以重定义继承得到的成员。 3.6 类的继承先看一个Employee类及其子类Manager : 覆盖(重写)当子类定义了和继承得到的父类成员变量同名的成员变量时,父类的被隐藏。如果是子类定义了和继承得到的父类方法同名的方法时,父类的被覆盖(或重写)。 3.7 方法覆盖重写是指子类重定义了父类中的同名方法。重写也是多态性的一种表现。方法的重写必须满足下列条件:(1)在子类和父类中定义的同名方法;(2)父类中的这个同名方法不是final的;(3)参数列表必须相同(参数类型、参数个数);(4)返回类型也完全相同;(5)子类的同名方法必须定义比父类被覆盖的方法相同或更高的访问控制权限。 需要强调的是,在子类中可以增加变量,增加方法或者覆盖方法,但是绝对不会删除继承的任何变量和方法。也就是说,上面虽然覆盖了原来的方法,只是调用时调用的新方法,原来继承过来的旧方法还是有的。 3.8 多态性与动态绑定多态(polymorphism)提高了程序可扩充性,调用多态性行为的软件传送给对象的消息(即方法调用)与对象的类型无关,因此能响应已有信息的新类型,可以直接加入系统而不用修改基本系统。在运行时自动选择正确的方法进行调用称为“动态绑定”(dynamic binding)。 3.8.1 多态性 Java中的多态性是通过继承、方法覆盖,以及向上转型实现的。子类和父类存在一个ISA的关系。 ISA的含义即为“是一个”,显然,我们可以肯定的说猫是一种哺乳动物,狗是一种哺乳动物。 在此基础上,我们可以更进一步的说,明明家的猫咪“豆豆”是一个哺乳动物,静静家的小狗“伊诺”是一个哺乳动物。这里,“豆豆”是Cat类的一个实例,“伊诺”是Dog类的一个实例。对于上边的描述,我们用JAVA的语句写出来就是: 这就引出了一个概念——上转型对象。Mammals类的对象doudou是子类Cat的上转型对象,Mammals类的对象yinuo是子类Dog的上转型对象。上转型对象由父类声明,实体由子类创建。 那么这样做有什么意义呢?因为子类是对父类的一个改进和扩充,所以一般子类在功能上较父类更强大,属性较父类更独特,定义一个父类类型的引用指向一个子类的对象既可以使用子类强大的功能,又可以抽取父类的共性。 如代码清单3-14所示 多态带来的好处,可以归纳为如下5点:可替换性(substitutability):多态对已存在代码具有可替换性。可扩充性(extensibility):多态对代码具有可扩充性。增加新的子类不影响已存在类的多态性、继承性,以及其他特性的运行和操作。接口性(interface-ability):多态是超类通过方法签名,向子类提供了一个共同接口,由子类来完善或者覆盖它而实现的。灵活性(flexibility):它在应用中体现了灵活多样的操作,提高了使用效率。简化性(simplicity):多态简化对应用软件的代码编写和修改过程,尤其在处理大量对象的运算和操作时,这个特点尤为突出和重要。 3.8.2 动态绑定理解调用一个对象方法的机制是非常重要的。首先,编译器检查对象的声明类型和方法名。接着检查方法调用中参数类型。将一个方法调用同一个方法主体关联起来就称为“绑定(binding)”。若在程序运行以前执行绑定(由编译器和链接程序实现,如果有的话),就叫做“早期绑定”。 “后期绑定”意味着绑定在运行期间进行,以对象的类型为基础。后期绑定也叫做“动态绑定”或“运行时绑定”。 3.8.2 动态绑定 Java中绑定的所有方法都采用后期绑定技术,除非一个方法已经被声明为final。动态绑定是指“在执行期间(而非编译期间)”判断所引用对象的实际类型,根据实际的类型调用其相应的方法,它是非常重要的特性,可使程序变得可扩展而无需重编译已存在代码。动态绑定工作机制:向上寻索 3.9 Java访问权限 Java提供的访问权限修饰符有四个,即public、private、protected和默认。 一般类(区别于内部类)只有2个访问权限控制:public和默认。 public class PrimNumber { //…… } class People { //…… } 类的成员包括有:成员变量、方法、内部类等。它们有上述的4个访问权限控制。修饰符要置于每个类成员的定义之前,且仅能控制它所修饰的那个成员。 注意:这里所言仅为访问,而不是使用。不管在任何情况下,实例成员都要通过对象调用,static成员通过类名调用(规范)。注意:类被定义成public的,并不代表类中的成员也是public的。 3.9 Java访问权限子类的继承性 本章结束
面向对象编程思想ppt:这是面向对象编程思想ppt,包括了初识面向对象,面向对象的出现背景,面向对象编程的论述,面向对象编程与面向过程编程的区别,面向对象程序设计的类和对象,面向对象编程的特点等内容,欢迎点击下载。
c++面向对象程序设计ppt:这是c++面向对象程序设计ppt,包括了C++的初步知识,类和对象,关于类和对象的进一步讨论,运算符重载,继承与派生,多态性与虚函数,输入输出流等内容,欢迎点击下载。
类和对象ppt:这是类和对象ppt,包括了面向对象程序设计思想,类和对象初探,定义类,实例化对象,初始化对象等内容,欢迎点击下载。