《JAVA语言程序设计》第03章 面向对象技术_第1页
《JAVA语言程序设计》第03章 面向对象技术_第2页
《JAVA语言程序设计》第03章 面向对象技术_第3页
《JAVA语言程序设计》第03章 面向对象技术_第4页
《JAVA语言程序设计》第03章 面向对象技术_第5页
已阅读5页,还剩43页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Java2程序设计实用教程第1章 概述 第2章 Java语言基础 第3章 面向对象技术 第4章 Java类和对象的高级特征第5章 异常处理第6章 图形界面设计第7章 多线程机制第8章 输入输出流第9章 Applet应用程序第10章 网络通信第11章 Web开发技术JSP第12章 J2EE概论第3章 面向对象技术 3.1 类和对象 3.2 类的创建3.3 对象的创建 3.4 类的封装 3.5 类的继承3.6 类的多态性 3.7 递归方法Java2程序设计实用教程叶核亚3.1 类和对象 类(Class)是一种复杂的数据类型,它是将数据和与数据相关的操作封装在一起的集合体。类是普通数据类型的扩展,它

2、不但包含数据,还包含了对数据进行操作的方法(method)。方法反映的是数据的行为而不是数据本身。对象(Object)是类的实例(instance),它是类的变量。当程序运行时,对象占用内存单元。对象与类的关系就像变量与类型的关系一样。类与对象是密切相关的,没有脱离对象的类,也没有不依赖于类的对象。Java2程序设计实用教程叶核亚3.2 类的创建Java类的定义格式分为两部分:类声明和类主体。格式如下:类声明 类主体3.2.1 类的声明 3.2.2 类主体 Java2程序设计实用教程叶核亚3.2.1 类的声明 类声明中包括关键字class、类名及类的属性。类声明的格式如下:修饰符 class

3、类名 extends 超类名 implements接口名例如:public class Date1Java2程序设计实用教程叶核亚3.2.2 类主体 包含类主体的类结构如下:类声明 成员变量的声明 成员方法的声明及实现Java2程序设计实用教程叶核亚1. 声明成员变量 Java类的状态用成员变量来表示。声明格式为:修饰符 static final transient 变量类型 变量名;例如,public class Date1/类声明 int year,month,day;/成员变量Java2程序设计实用教程叶核亚2. 声明成员方法 类的行为由它的方法实现,声明成员方法的格式为:修饰符 返回值

4、类型 方法名 (参数列表) throws 异常类 方法体如:public class Date1/类声明 int year,month,day;/成员变量 public void tomorrow() day = day1;/算法不全 Java2程序设计实用教程叶核亚例3.1 声明日期类Java2程序设计实用教程叶核亚3.3 对象的创建 一个对象的生命周期是:创建使用销毁。 3.3.1 创建对象 3.3.2 对象的使用 3.3.3 对象的初始化 3.3.4 对象的销毁 Java2程序设计实用教程叶核亚3.3.1 创建对象 声明对象:类名 对象名Date1 a; 实例化对象:new运算符用来创建

5、新的对象,并为之分配内存。a=new Date1();声明对象的同时实例化对象类名 对象名=new 类名 (参数列表)Date1 a=new Date1();Java2程序设计实用教程叶核亚3.3.2 对象的使用 引用成员变量对象名.变量名a.year=2003;调用成员方法对象名.方法名图3.1 对象创建与初始化 Java2程序设计实用教程叶核亚3.3.3 对象的初始化 1.系统对变量的初始化 2. 构造方法 Java2程序设计实用教程叶核亚1.系统对变量的初始化 表3.1 Java各类型变量的初值类型初值类型初值byte0float0.0fshort0double0.0int0charu0

6、000long0booleanfalse引用类型nullJava2程序设计实用教程叶核亚2. 构造方法 每次创建一个实例都需要初始化所有变量,Java允许对象在创建时就初始化。而这种自动初始化是通过使用构造方法(Constructor)来实现的。构造方法的名字与包含它的类相同,在语法上类似于一个方法。构造方法没有返回值,甚至连void修饰符都没有。因为一个类的构造方法返回值应是该类本身。Java中的简单类型其实也用类来实现的。例如, Integer i=new Integer(123); Integer i=new Integer(“123”);Java2程序设计实用教程叶核亚例3.2 使用构

7、造方法为日期赋初值Java2程序设计实用教程叶核亚3.3.4 对象的销毁 Java的垃圾回收机制自动判断对象是否在使用,并能够自动销毁不再使用的对象,收回对象所占的资源。程序中也可以使用析构方法finalize()随时销毁一个对象。Java2程序设计实用教程叶核亚3.4 类的封装 3.4.1 什么是封装? 3.4.2 如何封装 3.4.3 实例成员与类成员 Java2程序设计实用教程叶核亚3.4.1 什么是封装? 封装(encapsulation)的含义是:类的设计者把类设计成一个黑匣子,使用者只能看见类中定义的公共方法,而看不见方法的实现细节,也不能直接对类中的数据进行操作。封装的目的有:隐

8、藏类的实现细节;迫使用户通过接口去访问数据;增强代码的可维护性。Java2程序设计实用教程叶核亚3.4.2 如何封装 1. 访问权限 2. 设置类的访问权限 3. 设置类成员的访问权限 Java2程序设计实用教程叶核亚1. 访问权限 表3.1 权限修饰符允许的访问级别 权限修饰符同一类同一包不同包的子类所有类公有的(public)保护的(protected)默认的私有的(private)Java2程序设计实用教程叶核亚2. 设置类的访问权限 在声明一个类时,可以不用权限修饰符,也可以用public设置类为公有的,不允许使用其他的权限修饰符。如:public class Date1 /公有的类c

9、lass Date1 /非公有的类private class Date2/非法Java2程序设计实用教程叶核亚3. 设置类成员的访问权限 成员变量和成员方法都是Java类的成员。当声明一个类的成员时,可以使用权限修饰符允许或不允许其他类的对象访问其成员。如:private int year,month,day;/私有的类成员变量public void print()/公有的类成员方法设置类成员的访问权限时,4种修饰方式的含义为:public:公有的,说明该类成员可被所有类的对象使用。protected:保护的,说明该类成员能被同一类中的其他成员、或其子类成员、或同一包中的其他类访问,不能被其他

10、包的非子类访问。():默认的。当修饰符默认时,说明该类成员能被同一类中的其他成员、或同一包中的其他类访问。不能被包之外的其他类访问。private:私有的,说明该类成员只能被同一类中的其他成员访问,不能被其他类的成员访问,也不能被子类成员访问。Java2程序设计实用教程叶核亚3.4.3 实例成员与类成员 图3.2 实例成员与类成员 实例变量与类变量 private int year,month,day; /实例变量,私有的 static int count=0; /类变量实例方法与类方法 public static void print_count() /类方法,只能访问类变量 public

11、void print() /实例方法Java2程序设计实用教程叶核亚例3.4 实例成员与类成员Java2程序设计实用教程叶核亚3.5 类的继承3.5.1 创建子类 3.5.2 this、super引用和instanceof对象运算符 3.5.3 最终类与抽象类 Java2程序设计实用教程叶核亚继承是一种由已有类创建新类的机制。图3.3 继承性 Java2程序设计实用教程叶核亚3.5.1 创建子类 Java中的类都是Object的子类。Object类定义了所有对象都必须具有的基本状态和行为,例如,等待条件变量、转化为字符串、通知其他对象条件变量已改变等。Java中的每个类都从Object类继承了

12、变量和方法,因而Java的所有对象都具有Object对象的基本状态和行为。1. 说明类的超类 2. 子类继承的成员变量 3. 子类继承的成员方法 Java2程序设计实用教程叶核亚1. 说明类的超类 在Java中,每个类都有超类,如果没有显式地标明类的超类,则隐含地假设超类为在语言包java.lang中说明的Object类。修饰符 class 子类名 extends 超类名单继承,只能有一个超类class Sub extends SuperJava2程序设计实用教程叶核亚2. 子类继承的成员变量 子类可继承超类的public、protected和默认修饰变量,不能继承private变量。反之,如

13、果超类不允许其子类访问它的某些成员,那么它必须以private方式声明该成员。这一点充分体现了类封装的信息隐蔽原则。Java2程序设计实用教程叶核亚例3.5 子类继承超类的成员变量public class Person2 String name; /姓名 int age; /年龄class Student2 extends Person2 /子类, 有3个成员变量 String dept; /系别Java2程序设计实用教程叶核亚3. 子类继承的成员方法 子类可继承其超类的public、protected和缺省修饰方法,不能继承private方法。子类除了可以继承超类中的变量及方法,还可以增加自

14、已的成员。当一个超类成员不适合该子类时,子类会以恰当的方式重新定义它,就是隐藏超类的变量、覆盖超类的方法。Java2程序设计实用教程叶核亚例3.6 子类继承超类的成员方法Java2程序设计实用教程叶核亚3.5.2 this、super引用和instanceof对象运算符 this引用 指代对象本身。void equals(Object obj2) /this指代调用本方法的当前对象 Object obj1=this; 访问本类的成员变量和成员方法。格式为:this.变量名this.方法名调用本类的构造方法。this (参数列表)Java2程序设计实用教程叶核亚2.super引用使用关键字sup

15、er,可以引用被子类隐藏的超类的成员变量和成员方法,称为super引用。访问被子类隐藏的超类的成员变量和成员方法。格式为:super.变量名super.方法名调用超类的构造方法。格式为:super(参数列表)Java2程序设计实用教程叶核亚例3.7 this和super引用Java2程序设计实用教程叶核亚3. instanceof对象运算符 对象运算符instanceof用来测试一个指定对象是指定类(或它的子类)的实例,若是则返回true,否则返回false。Java2程序设计实用教程叶核亚3.5.3 最终类与抽象类 最终类最终类是指不能被继承的类,即最终类不能有它的子类。例如:final c

16、lass C1/合法,C1为最终类class C2 extends C1/非法,不能为最终类的子类声明最终方法final void m1() /合法,m1为最终方法Java2程序设计实用教程叶核亚2. 抽象类 抽象方法,该方法必须被子类的方法覆盖。例如:abstract void m3()/合法,m3为抽象方法构造方法不能被声明为抽象的。方法声明中,static和abstract也不能同时存在。抽象类,任何包含抽象方法的类必须被声明为抽象类。抽象类是不能直接被实例化的类。例如:abstract class D1/合法,D1为抽象类class D2 extends D1/合法,D2可以为抽象类的

17、子类D1 vd1=new D1()/非法,抽象类不能实例化Java2程序设计实用教程叶核亚3.6 类的多态性 多态(polymorphism),意为一个名字可具有多种语义。 3.6.1 方法的重载 3.6.2 方法的覆盖 Java2程序设计实用教程叶核亚3.6.1 方法的重载 方法的重载(method overloading):一个类中如果有许多同名的方法带有不同的参数表。static int abs( int a)static long abs(long a)static float abs(float a)static double abs(double a)方法重载时:参数必须不同,即可

18、以参数个数不同,也可以对类型不同;返回值可以相同,也可以不同。Java2程序设计实用教程叶核亚例3.9 构造方法的重载 Java2程序设计实用教程叶核亚3.6.2 方法的覆盖 子类继承超类中所有可被子类访问的成员方法,如果子类方法与超类方法同名,则不能继承,此时子类的方法称作覆盖(override)了超类中的那个方法。在进行覆盖时,应注意以下3点:子类不能覆盖超类中声明为final或static的方法。子类必须覆盖超类中声明为abstract的方法,或者子类也声明为abstract。子类覆盖超类中同名方法时,子类方法声明必须与超类被覆盖方法的声明一样。Java2程序设计实用教程叶核亚例3.10 方法的覆盖Java2程序设计实用教程叶核亚3.7 递归方法递归(recursion)是数学计算中的一种思维方式

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论