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