JAVA语言与编程第4章类与对象.ppt
《JAVA语言与编程第4章类与对象.ppt》由会员分享,可在线阅读,更多相关《JAVA语言与编程第4章类与对象.ppt(32页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第4章章 类与对象类与对象4.1 基本概念基本概念4.1.1 面向对象编程简介面向对象编程简介 面向对象编程或面向对象设计均可称为面向对象编程或面向对象设计均可称为OOP,它是目前占,它是目前占主流地位的一种程序设计方式,取代了先前的所谓结构化、主流地位的一种程序设计方式,取代了先前的所谓结构化、面向过程的编程技术。面向过程的编程技术。传统的结构化编程是设计一组函数来解决一个问题,即先传统的结构化编程是设计一组函数来解决一个问题,即先解决算法,再解决使计算更容易的数据结构;解决算法,再解决使计算更容易的数据结构;OOP方法则相方法则相反,即先解决数据结构,再解决数据结构运算的算法,数据反,即
2、先解决数据结构,再解决数据结构运算的算法,数据结构和算法均封装在对象中。结构和算法均封装在对象中。4.1.2 类与对象类与对象 在面向对象程序设计中,对象是程序的基本单位,相似的对象之间的在面向对象程序设计中,对象是程序的基本单位,相似的对象之间的关系就像是相同类型的不同变量。这些相似的对象可以通过一个类将它关系就像是相同类型的不同变量。这些相似的对象可以通过一个类将它们抽象出来,在类中定义它们共同的属性和方法。们抽象出来,在类中定义它们共同的属性和方法。类实质上定义了一种对象类型,它是具有相似行为的对象的一种抽象类实质上定义了一种对象类型,它是具有相似行为的对象的一种抽象,描述了属于该类型的
3、所有对象的性质描述了属于该类型的所有对象的性质统一的属性和统一的操作模式。统一的属性和统一的操作模式。对象是在程序执行过程中由其所属的类动态生成的,一个类可以生成对象是在程序执行过程中由其所属的类动态生成的,一个类可以生成多个不同对象,对象也被称作类的实例。同一个类的所有对象有相同的多个不同对象,对象也被称作类的实例。同一个类的所有对象有相同的性质。但一个对象的内部状态只能由其自身修改,任何别的对象都不能性质。但一个对象的内部状态只能由其自身修改,任何别的对象都不能修改它。因此,同一个类的对象虽然在外部表现形式上相同,但可以有修改它。因此,同一个类的对象虽然在外部表现形式上相同,但可以有不同的
4、内部状态,即不同的属性值。不同的内部状态,即不同的属性值。4.1.3 消息和方法消息和方法 对象之间进行交互时,通过消息来实现。对象之间进行交互时,通过消息来实现。构成消息的三个要素:构成消息的三个要素:(1)接收消息的对象接收消息的对象 (2)接收消息的方法接收消息的方法 (3)方法所需要的参数方法所需要的参数4.1.4 面向对象编程的基本特征面向对象编程的基本特征1.封装性:封装性:“封装封装”是一种组织开发软件的方法,其基本思想是把客观世界中联是一种组织开发软件的方法,其基本思想是把客观世界中联系系紧密的元素和相关操作组织在一起,使其相互关系隐藏在程序体内部,紧密的元素和相关操作组织在一
5、起,使其相互关系隐藏在程序体内部,而对外仅仅表现为与其他封装体之间的接口。而对外仅仅表现为与其他封装体之间的接口。在面向对象的程序开发中,每个类都封装了相关的数据和操作。另外在面向对象的程序开发中,每个类都封装了相关的数据和操作。另外,在在Java中,包的概念也体现了封装性,包将一组相关的类封装在一起。中,包的概念也体现了封装性,包将一组相关的类封装在一起。类的封装性使得代码的可重用性大为提高。使用者不用知道实现的细类的封装性使得代码的可重用性大为提高。使用者不用知道实现的细节,只需要用设计者提供的消息来访问该对象(公共的方法)。节,只需要用设计者提供的消息来访问该对象(公共的方法)。2.继承
6、性:继承性:Java中的类组成一个层次结构:一个类之上的类称为父类,下层的类中的类组成一个层次结构:一个类之上的类称为父类,下层的类称为子类。这种层次结构的一个重要性质就是继承性。父类可以产生子称为子类。这种层次结构的一个重要性质就是继承性。父类可以产生子类,子类可以继承父类中的属性和方法,且这种继承具有传递性。一个类,子类可以继承父类中的属性和方法,且这种继承具有传递性。一个类可以继承其上层的全部父类中的属性和方法。这样某个类的对象除了类可以继承其上层的全部父类中的属性和方法。这样某个类的对象除了具有这个类所描述的性质外,还具有类等级中该类的上层的全部父类所具有这个类所描述的性质外,还具有类
7、等级中该类的上层的全部父类所描述的一切性质。描述的一切性质。在面向对象的继承特性中,还有一个单重继承和多重继承的概念。单在面向对象的继承特性中,还有一个单重继承和多重继承的概念。单重继承是指一个类只有一个单一的父类。多重继承是指一个类可以有一重继承是指一个类只有一个单一的父类。多重继承是指一个类可以有一个以上的父类。个以上的父类。Java不支持多重继承,但可以通过一个类实现多个接口不支持多重继承,但可以通过一个类实现多个接口的方法来完成多重继承的功能。的方法来完成多重继承的功能。类的继承的好处:利用了代码的可重用性,减少了程序中的冗余信息类的继承的好处:利用了代码的可重用性,减少了程序中的冗余
8、信息3.多态性:多态性:多态是指通过方法重写,一个类可以具有多个相同名字的多态是指通过方法重写,一个类可以具有多个相同名字的方法,由参数个数和类型对它们加以区分。通过方法重写,方法,由参数个数和类型对它们加以区分。通过方法重写,子类可以重写父类的某些方法,使其具有自己的特征。重写子类可以重写父类的某些方法,使其具有自己的特征。重写可以隐藏父类的方法,使子类具有了自己的具体实现。可以隐藏父类的方法,使子类具有了自己的具体实现。父类和子类可以有相同名字的属性和方法,在程序的执行父类和子类可以有相同名字的属性和方法,在程序的执行期间,对对象某一属性的查找是从该对象类所在层次开始,期间,对对象某一属性
9、的查找是从该对象类所在层次开始,沿着类等级逐渐向上进行的,把第一个找到的属性作为所要沿着类等级逐渐向上进行的,把第一个找到的属性作为所要的属性。因此,底层可以屏蔽高层的属性。的属性。因此,底层可以屏蔽高层的属性。4.2 类类 类是类是Java中最基本的复合数据类型,是组成中最基本的复合数据类型,是组成Java程序的基程序的基本要素。创建一个新类就是创建一个新的数据类型,实例化本要素。创建一个新类就是创建一个新的数据类型,实例化一个类就得到一个对象一个类就得到一个对象.类有两种基本成分:属性和方法,又称成员变量和成员方类有两种基本成分:属性和方法,又称成员变量和成员方法。法。类的成员变量可以是基
10、本数据类型或数组,也可以是复合类的成员变量可以是基本数据类型或数组,也可以是复合数据类型。数据类型。类的方法用于处理该类的数据,类中的方法与其他语言中类的方法用于处理该类的数据,类中的方法与其他语言中函数的区别函数的区别:Java中的方法只能是类的成员,只能在类中定中的方法只能是类的成员,只能在类中定义。义。4.2.1 类的定义类的定义格式:格式:修饰符修饰符 class 类名类名 extends 父类名父类名 implements 接口名接口名 类属性声明;类属性声明;类方法声明;类方法声明;说明说明:(1)class表示类定义开始,类名第一个字母通常大写表示类定义开始,类名第一个字母通常大
11、写 (2)修饰符用来说明类的特殊性质,分为访问控制符和类型说明符,修饰符用来说明类的特殊性质,分为访问控制符和类型说明符,访问控制符用来说明类能被哪些对象引用访问控制符用来说明类能被哪些对象引用(public),类型说明符类型说明符有有 abstract和和final,表示抽象类和最终类,表示抽象类和最终类 (3)关键字关键字extends表示继承,后面跟一个父类名表示继承,后面跟一个父类名 (4)关键字关键字implements表示该类实现了接口,一个类可以实现多个表示该类实现了接口,一个类可以实现多个 接口,接口使得类可以实现多重继承接口,接口使得类可以实现多重继承属性的说明:属性的说明:
12、修饰符修饰符 变量的数据类型变量的数据类型 变量名变量名初始值初始值;修饰符修饰符 类名类名 对象名对象名new 类名类名(参数列表参数列表);类的属性修饰符有访问控制符,类的属性修饰符有访问控制符,static,final,volatile,transient方法的说明:方法的说明:修饰符修饰符 返回值类型返回值类型 方法名方法名(形参说明形参说明)throws 异常异常1,异常,异常2,局部变量说明;局部变量说明;执行语句组;执行语句组;类的方法修饰符包括:访问控制符,类的方法修饰符包括:访问控制符,static,final,synchronous,native返回值可以是简单变量也可以是
13、复合对象,若无返回值,则用返回值可以是简单变量也可以是复合对象,若无返回值,则用void方法的名字最好体现方法的功能方法的名字最好体现方法的功能,常采用动词加宾语的形式常采用动词加宾语的形式,首字母小写首字母小写形参表示要传递到方法体内的变量,形参可以有多个,也可为空;形参形参表示要传递到方法体内的变量,形参可以有多个,也可为空;形参可以是简单的数据类型,也可以是复杂数据类型;对于复杂数据类型的可以是简单的数据类型,也可以是复杂数据类型;对于复杂数据类型的参数对象,传递的是对象在内存中的地址。参数对象,传递的是对象在内存中的地址。4.2.2 修饰符修饰符1.访问控制符访问控制符包的概念:包由一
14、组类组成,它如同文件夹一样将各种类组织在一起包的概念:包由一组类组成,它如同文件夹一样将各种类组织在一起.包包中的类没有严格的某种关系,只是为了方便管理而将它们放在一个包中中的类没有严格的某种关系,只是为了方便管理而将它们放在一个包中 访问控制符规定了类、属性和方法可以被程序的哪些部分访问和调用访问控制符规定了类、属性和方法可以被程序的哪些部分访问和调用(1)类访问控制符:类访问控制符:public和默认形式和默认形式 public:公共类,表示它能被其他的任何类访问。一个包中的类相互:公共类,表示它能被其他的任何类访问。一个包中的类相互 可见,可以互相访问,但不在同一个包中的类相互间是不可见
15、可见,可以互相访问,但不在同一个包中的类相互间是不可见 的。若要访问,则需要用的。若要访问,则需要用import将该类引入将该类引入,但引入的必须是但引入的必须是 public类。另外,含有类。另外,含有main()方法的类必须是公共类方法的类必须是公共类 默认:表示该类只能被同一个包中的类访问,而不可以被其他包中的默认:表示该类只能被同一个包中的类访问,而不可以被其他包中的 类访问。即使用类访问。即使用import引入,也不可以。引入,也不可以。(2)属性方法访问控制符属性方法访问控制符:public,private,protected,private protected,默认默认 publ
16、ic:修饰的属性和方法是公共的属性和方法,若类也是修饰的属性和方法是公共的属性和方法,若类也是public,则这则这 些属性和方法可以被所有的类访问。由于面向对象设计中的封些属性和方法可以被所有的类访问。由于面向对象设计中的封 装性的要求装性的要求,公共的属性应尽量减少公共的属性应尽量减少,可通过公共的方法间接访可通过公共的方法间接访问问private:私有访问控制符,经它修饰的属性和方法只能被类自身的方法访私有访问控制符,经它修饰的属性和方法只能被类自身的方法访 问和使用问和使用,它对属性和方法进行了最高级别的保护它对属性和方法进行了最高级别的保护.多数用来修饰多数用来修饰 属性属性,其他类
17、需通过该类中的公共方法来访问这些属性其他类需通过该类中的公共方法来访问这些属性.这些公共这些公共 的方法为这些属性提供了一个统一的接口的方法为这些属性提供了一个统一的接口,体现了面向对象思想。体现了面向对象思想。protected:保护访问控制符保护访问控制符,它修饰的属性和方法比它修饰的属性和方法比private修饰的有较大修饰的有较大 的可见域的可见域,可以被同一个包中的其他类可以被同一个包中的其他类,不同包中的子类以及该类不同包中的子类以及该类 自身访问和引用自身访问和引用,主要是为了让子类能够方便地访问父类主要是为了让子类能够方便地访问父类private protected:私有保护访
18、问控制符私有保护访问控制符,只能被该类自身和子类访问和只能被该类自身和子类访问和引用引用.既保证了子类对父类访问的方便性,又提高了使用的安全性。既保证了子类对父类访问的方便性,又提高了使用的安全性。默认:默认:只能被同一个包中的其他类访问和引用只能被同一个包中的其他类访问和引用修饰符修饰符类自身类自身子类子类包包不同包非子类不同包非子类publicprivateprotectedprivate protecteddefault2.关键字关键字static 前面提到的很多关于一个类访问其他类的属性和方法前面提到的很多关于一个类访问其他类的属性和方法,都是指创建了这都是指创建了这个类的对象后个类的
19、对象后,以对象的形式对类的属性和方法进行访问,但是在很多情以对象的形式对类的属性和方法进行访问,但是在很多情况下需要直接调用类的属性和方法。况下需要直接调用类的属性和方法。static所修饰的属性和方法为静态的属性和方法。通常,所修饰的属性和方法为静态的属性和方法。通常,static所修饰所修饰的属性的取值,对所有对象都是相同的,任何一个对象对其修改,必然的属性的取值,对所有对象都是相同的,任何一个对象对其修改,必然会影响到同一类中其他对象,而对于会影响到同一类中其他对象,而对于static所修饰的方法,在没有创建类所修饰的方法,在没有创建类的对象的情况下就可以对其进行访问。的对象的情况下就可
20、以对其进行访问。static修饰的属性和方法在类被加载内存时就开辟了内存空间修饰的属性和方法在类被加载内存时就开辟了内存空间,而并不而并不是在创建一个对象时创建的。因此这些属性和方法必然要成为类中所有是在创建一个对象时创建的。因此这些属性和方法必然要成为类中所有对象共有的属性和方法。对象共有的属性和方法。静态属性和方法可以用类名直接调用静态属性和方法可以用类名直接调用,如如java.lang包中的类包中的类System中中的属性和方法都是静态的。的属性和方法都是静态的。System.out.println(),out是是System类中一个属性,它含有一个方法类中一个属性,它含有一个方法pri
21、ntln()3.其他修饰符其他修饰符(1)abstract:抽象修饰符:抽象修饰符,在类的继承中使用在类的继承中使用,它修饰的类不能被实例化它修饰的类不能被实例化(2)final:最终修饰类,它修饰的类不能被继承,方法不能再进行重载:最终修饰类,它修饰的类不能被继承,方法不能再进行重载(3)volatile synchronized:异步控制修饰符:异步控制修饰符 volatile修饰属性,多个并发线程共享的变量,使各线程对该变量的访修饰属性,多个并发线程共享的变量,使各线程对该变量的访 问保持一致。问保持一致。synchronized用于声明在任何时候都只能有一个线程可以执行的一段用于声明在
22、任何时候都只能有一个线程可以执行的一段 代码或一个方法。代码或一个方法。(4)native:修饰方法,表示该方法不是用:修饰方法,表示该方法不是用java编写的编写的4.2.3 构造函数构造函数 构造函数是类的一种特殊方法,构造函数是类的一种特殊方法,java中每个类都有构造函数,它的功中每个类都有构造函数,它的功能是为类的对象定义初始化状态,若在类中没有提供构造函数,则使用能是为类的对象定义初始化状态,若在类中没有提供构造函数,则使用默认的构造函数,默认的构造函数没有参数,属于父类。若父类中没有默认的构造函数,默认的构造函数没有参数,属于父类。若父类中没有提供构造函数,则会产生编译错误。(例
23、:提供构造函数,则会产生编译错误。(例:A406.java)构造函数的名称必须与类名相同,且不能有返回值,创建对象时就要构造函数的名称必须与类名相同,且不能有返回值,创建对象时就要用构造函数,用用构造函数,用new来调用它来调用它 同一个类中可以有多个构造函数,名称相同,而参数不同,它们以参同一个类中可以有多个构造函数,名称相同,而参数不同,它们以参数的个数和类型不同来区分。数的个数和类型不同来区分。关键字关键字this的使用:的使用:在构造函数或其他函数中有时会用到关键字在构造函数或其他函数中有时会用到关键字this,代表当前对象。在类代表当前对象。在类的成员函数中的成员函数中,若要使用本类
24、的属性和方法若要使用本类的属性和方法,前面加前面加this,但常可省略但常可省略class X int a;void show()void method()a=5;/等价于等价于this.a=5;show();/等价于等价于this.show();在某些情况下,在方法体中若局部变量与类的成员变量同在某些情况下,在方法体中若局部变量与类的成员变量同名,而此时又需要使用成员变量,就必须使用名,而此时又需要使用成员变量,就必须使用this关键字加关键字加以区分。以区分。class Y int a;int b;void init(int x,int y)int a=3;this.a=x;b=y;/等价
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- JAVA 语言 编程 对象
限制150内