Java高级编程-面向对象高级话题.ppt
《Java高级编程-面向对象高级话题.ppt》由会员分享,可在线阅读,更多相关《Java高级编程-面向对象高级话题.ppt(58页珍藏版)》请在三一办公上搜索。
1、第一周周一内容,面向对象高级主题,本节内容,类的组成对象,对象相等?(=与equals)封装、继承和多态抽象类与接口面向接口编程类或对象关系,代码复用关键字static、final、abstract等内部类,枚举类,1、类的组成,请举例,如Car类,请尽你的理解给出一个类可以有哪些要素组成,可以将现实生活中的对象经过抽象,映射为程序中的对象。对象在程序中是通过一种抽象数据类型来描述的,这种抽象数据类型称为类(Class)。,1、类的组成,定义类的语法格式:修饰符 class 类名.类体.类体可以由多个属性、方法、构造器组成。注意:类的修饰符可以是public、final 或省略这两个以及abs
2、tract。类名只要是合法的标识符.一个类里可以包含三种最常见的成员:构造器、属性、方法。,1、类的组成,定义属性的语法格式:修饰符 属性类型 属性名=默认值;修饰符可以是访问权限:public:可被任何类访问。protected:被类自身,子类及同一包中的类访问。default:也称友好,被类自身和同一包中的类访问。private:只能被类自身访问。其他:transient声明一个暂时性变量,对象存档时不必保存该变量;final声明一个常量,程序不能改变其值,通常用大写;voltatile用于声明一个共享变量,用于多个并发线程共享;static:表示类成员。,成员变量和局部变量,成员变量指的
3、是在类范围里定义的变量;局部变量指的是在一个方法内定义的变量。不管是成员变量还是局部变量都遵守相同的命名规则。成员变量分为类属性和实例属性.对于类属性无论通过类还是对象来访问都是访问同一个对象,只要一个对象改变了类属性,那么其他对象对应的类属性也改变了.成员变量不用显式初始化,只要定义了一个类属性或实例属性,系统默认进行初始化。,局部变量,局部变量可分为三种:形参方法局部变量代码块局部变量.与成员变量不同的是除了形参外,其他局部变量都必须显式地初始化,Java 里允许局部变量和成员变量重名。这样局部变量会覆盖成员变量,这时通过this 来调用实例的属性.,成员变量的初始化,当类被加载时,类成员
4、就在内存中分配了一块空间。当对象被创建时,实例成员就在内存中分配了内存空间。实例变量与实例共存亡;类变量与类本身共存亡。,局部变量的运行机制,局部变量仅在方法内有效。当方法执行完成时,局部变量便会自动销毁。,1、类的组成,定义方法的语法格式:修饰符 方法返回值类型 方法名(形参列表).方法体.方法中的修饰符可以是public,protected,private,static,final,abstract,其中访问控制符只能出现一个,abstract,final 只能出现其一.返回值类型可以是基本类型和引用类型,如果无返回值,要用void 来声明形参列表,可以由零到多组组成,参数之间用逗号(“,
5、”)隔开.static 是一个特殊的关键字,译为”静态”,所有有static 修饰的叫类属性,类方法,类成员.,1、类的组成,定义方法的语法格式:修饰符 方法返回值类型 方法名(形参列表).方法体.方法的调用:,1、类的组成,定义方法的语法格式:修饰符 方法返回值类型 方法名(形参列表).方法体.方法的重载就是在同一个类中允许同时存在一个以上的同名函数,只要它们的参数个数或类型不同即可。如:public class Testpublic static void main(String args)int isum;double fsum;isum=add(3,5);isum=add(3,5,6)
6、;fsum=add(3.2,6.5);public static int add(int x,int y)reutrn x+y;public static int add(int x,int y,int z)return x+y+z;public static double add(double x,double y)return x+y;,修饰词访问权限:public:protected:private:default:其他abstract修饰的为抽象方法,必须被重写,抽象类不一定包含abstract方法,但如果一个类包含abstract方法,该类必须声明为抽象类;final修饰的方法不能再
7、被类重写;native用于将java代码和其他语言的代码集成起来;synchronized用来控制多个并发线程对共享数据的访问。static:类方法。,不同限定词的访问权限,public类,缺省修饰的类,P41,方法的重载,Java 允许在一个类里定义多个同名方法,只要形参列表不同即可.所以方法的重载只要满足两个条件(两同一不同):1.同一个类中,方法名相同;2.形参不同。和返回值类型无关.所以在调用这些方法时要传入不同的参数值.,方法的参数传递基本数据类型的参数传递,方法的参数传递引用数据类型的参数传递,方法的参数传递-值传递,形参长度可变的方法,如果在定义方法时,在最后一个参数的类型后增加
8、三点,则表明该形参接受多个参数值,多个参数值被当成数组传入.长度可变的形参只能位于最后一个参数,并一个方法里只能有一个可变长度的参数.,1、类的组成,定义构造器的语法格式:修饰符 构造器名(形参列表)修饰符可以是public protected private 构造器必须和类名相同,形参和方法的形参一样.,构造函数的定义与作用,构造器是一种特殊的方法,构造对象并对其初始化。例:Date类的构造器叫DatenewDate()-构造一个新对象,且初始化当前时间.构造器可以有0个,一个或多个参数构造器和类有相同的名字一个类可以有多个构造器构造器没有返回值构造器总是和new运算符一起使用.如果没有声明
9、构造器,则系统默认提供一个无参的构造器;如果自己声明了构造器,系统则不再默认提供。,构造方法的重载,和一般的方法重载一样,重载的构造方法具有不同个数或不同类型的参数,编译器就可以根据这一点判断出用new 关键字产生对象时,该调用哪个构造方法了。产生对象的格式是:new 类名(参数列表);重载构造方法可以完成不同初始化的操作,如:p3=new Person(“Tom”,18);语句,会做这样几件事:创建指定类的新实例对象,在堆内存中为实例对象分配内存空间,并调用指定类的构造方法,最后将实例对象的首地址赋值给引用变量p3。,构造方法的一些细节,在java每个类里都至少有一个构造方法,如果程序员没有
10、在一个类里定义构造方法,系统会自动为这个类产生一个默认的构造方法,这个默认构造方法没有参数,在其方法体中也没有任何代码,即什么也不做。由于系统提供的默认构造方法往往不能满足编程者的需求,我们可以自己定义类的构造方法,来满足我们的需要,一旦编程者为该类定义了构造方法,系统就不再提供默认的构造方法了。声明构造方法,如无特殊需要,应使用public关键字,在我们前面例子中,可以使用private访问修饰符吗?,this是什么?,如果func2方法被调用,一定是事先已经有了一个存在的对象,func2被作为那个对象的方法被使用。在func2内部能引用别的对象,同样也能引用func2所属的那个对象。在fu
11、nc2中,自己所属的那个对象的引用名称是什么呢?this关键字在java程序里的作用和它的词义很接近,它在函数内部就是这个函数所属的对象的引用变量。,this引用句柄的存放位置,每个成员方法内部,都有一个this引用变量,指向调用这个方法的对象,类中的成员方法与this之间的关系如图,this引用句柄的应用,一个类中的成员方法可以直接调用同类中的其他成员,其实我们在一个方法内部使用“this.其他成员”的引用方式和直接使用“其他成员”的效果是一样的,那this还有多大的作用呢?在有些情况下,我们还是非得用this关键字不可的:让类的成员变量名和对其进行赋值的成员方法的形参变量同名是必要的,这样
12、的代码谁看了都能明白这两个变量是彼此相关的,老手看到函数的定义,就能揣摩出函数中的代码,大大节省了别人和自己日后阅读程序的时间。假设我们有一个容器类和一个部件类,在容器类的某个方法中要创建部件类的实例对象,而部件类的构造方法要接收一个代表其所在容器的参数。构造方法是在产生对象时被java系统自动调用的,我们不能在程序中象调用其他方法一样去调用构造方法。但我们可以在一个构造方法里调用其他重载的构造方法,不是用构造方法名,而是用this(参数列表)的形式,根据其中的参数列表,选择相应的构造方法。,3、对象相等?(=与equals),什么是对象相等?如何让两辆车相等?,对象的比较,“=”运算符与eq



- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 高级 编程 面向 对象 话题

链接地址:https://www.31ppt.com/p-6510341.html