第五章 Java面向对象编程基础 类:现实世界中实体的抽象集合。 5.1定义类 定义类的过程就是定义类的属性和服务的过程;

Slides:



Advertisements
Similar presentations
网络应用程序设计 2014 JavaBean. JavaBean 及其属性 JavaBean 就是一种 Java 的组件技术 JavaBean 是 Java 类 JavaBean 通过约定的方法名实现属性功能 简单属性 void setXxx(Type value) Type getXxx() boolean.
Advertisements

7.1 内置对象概述及分类 JSP 视频教学课程. JSP2.2 目录 1. 内置对象简介 1. 内置对象简介 2. 内置对象分类 2. 内置对象分类 3. 内置对象按功能区分 3. 内置对象按功能区分 4. 内置对象作用范围 4. 内置对象作用范围.
1 类的严谨定义格式如下: [ 类修饰符 ] class 类名 [extends 父类名 ] [implements 接口列表 ] { 数据成员 成员方法 } 类的严谨定义.
第3章 使用类和对象编程 软 件 学 院 朱士明 副教授.
项目三 Java面向对象程序设计 任务一 了解面向对象程序设计的基本概念 任务二 掌握类的使用方法 任务三 熟悉对象的创建与使用方法
第4章 Java中的几个关键字 Java 语言编程技术.
西南科技大学网络教育系列课程 高级语程序设计(Java) 第四章 类与对象.
第3章 面向对象的编程技术.
第四章 类 和 对 象.
第4章 类 和 对 象.
第四章 对象与类 掌握面向对象程序设计语言的特点 理解对象、类,类和对象的关系 掌握类,成员变量,方法的定义 掌握构造方法的定义
Java软件开发基础 4. 面向对象的程序设计基础.
第3章 面向对象程序设计.
配合< Java面向对象程序设计>例子源代码一起使用
Java的面向对象程序设计.
再回首: Java关键字 数据类型:byte boolean char double float int long short
Java程序设计 案例教程 第03章—2 北京大学出版社.
Oracle数据库 Oracle 子程序.
第三章 Java面向对象程序设计 3.1 Java的类和对象 3.2 域和方法 3.3 访问控制符 3.4 继承
第14章 c++中的代码重用.
全国计算机等级考试 二级基础知识 第二章 程序设计基础.
类与对象 Java 实用技术4 类与对象
第10讲 Java面向对象编程基础(4) 教学目标 主要内容.
第4章 类和对象 学习导读 本章着重介绍Java编程中类和对象等非常重要的概念。
行 言 面向对象程序设计基础(下) 类属性 类方法 包 限定符 接口 内部类.
第六章 JAVA语言中的面向对象特性 6.1 类 6.2 对象 6.3 面向对象的特性 6.4 抽象类、接口和Inner Class.
第四章 Java面向对象程序设计.
3.3 Java的非访问控制符 Java的非访问控制符 static 静态修饰符 修饰属性和方法 abstract 抽象修饰符 修饰类和方法
JAVA 面向对象基础知识 主要内容: 1.面向对象基本概念 2.Java的类与对象 3.成员变量与封装 成员方法.
Ch08 巢狀類別 物件導向程式設計(II).
Kvm异步缺页中断 浙江大学计算机体系结构实验室 徐浩.
第4章 面向对象编程 主要任务: 理解面向对象编程的基本概念 了解类的封装方法 如何创建类和对象 了解成员变量和成员方法的特性
第 4 章 抽象与封装.
EBNF 请用扩展的 BNF 描述 C语言里语句的结构; 请用扩展的 BNF 描述 C++语言里类声明的结构;
Java程序设计 第4章 类、包和接口.
Java习题解析.
管理信息结构SMI.
辅导课程六.
第一单元 初识C程序与C程序开发平台搭建 ---观其大略
第二章 Java语言基础.
用event class 从input的root文件中,由DmpDataBuffer::ReadObject读取数据的问题
JAVA 编 程 技 术 主编 贾振华 2010年1月.
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
C语言程序设计 主讲教师:陆幼利.
EBNF与操作语义 请用扩展的 BNF 描述 javascript语言里语句的结构;并用操作语义的方法描述对应的语义规则
简单介绍 用C++实现简单的模板数据结构 ArrayList(数组, 类似std::vector)
$9 泛型基础.
C++复习3 ----类的继承与派生.
C#面向对象程序设计 $6 深入理解类.
C++语言程序设计 C++语言程序设计 第九章 类的特殊成员 第十一组 C++语言程序设计.
本节内容 类成员的访问控制 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
第二章 Java语法基础.
3.5 Java的包与访问控制符.
Chapter 18 使用GRASP的对象设计示例.
多层循环 Private Sub Command1_Click() Dim i As Integer, j As Integer
C++语言程序设计 C++语言程序设计 第八章 继承 C++语言程序设计.
辅导课程十五.
第二章 Java基本语法 讲师:复凡.
本节内容 C语言的汇编表示 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
C++语言程序设计 C++语言程序设计 第八章 继承 C++语言程序设计.
基于列存储的RDF数据管理 朱敏
C++语言程序设计 C++语言程序设计 第一章 C++语言概述 第十一组 C++语言程序设计.
本节内容 动态链接库 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
C++语言程序设计 C++语言程序设计 第九章 类的特殊成员 第十一组 C++语言程序设计.
C++语言程序设计 C++语言程序设计 第九章 类的特殊成员 第十一组 C++语言程序设计.
第2章 Java语言基础.
第十七讲 密码执行(1).
创建、启动和关闭Activity 本讲大纲: 1、创建Activity 2、配置Activity 3、启动和关闭Activity
使用Fragment 本讲大纲: 1、创建Fragment 2、在Activity中添加Fragment
C++语言程序设计 C++语言程序设计 第九章 类的特殊成员 第十一组 C++语言程序设计.
Presentation transcript:

第五章 Java面向对象编程基础 类:现实世界中实体的抽象集合。 5.1定义类 定义类的过程就是定义类的属性和服务的过程; 类的属性就是类的静态属性的简称,指类内包含的各项数据。 类的服务则被称为成员函数或方法。

类的一般语法结构为: [修饰符] class 类名 [extends 父类] [implements 接口名] { 类成员变量声明; 类方法声明; }

1.声明类头 类头部分关键字class标志着一个类定义的开始,class后面跟着新定义类的类名,类名由编程者命名,命名原则要遵从Java对标识符的有关规定,并体现该类主要功能或作用。

(1)父类名 父类名跟在extends关键字后面,用来说明当前类是已经存在的哪个类的子类。 这个已经存在的类可以是Java类库中定义的类,也可以是同一个程序或其他程序中已定义好的类。 通过定义继承关系,子类可以获得父类的所有属性和方法。

class Employee{//雇员类,包含所有雇员都有的属性 int m_EmpNo;//雇员号 int m_DeptNo;//雇员所在部门号 } //一般雇员,有上司编号 class CommonEmployee extends Employee{ int m_ManagerNo;//上司编号 //主管,有秘书编号 class ManagerEmployee extends Employee{ int m_SecretaryNo;//秘书编号

(2)接口名 接口名跟在implements关键字后面,用来说明当前类中实现了哪个接口定义的功能和方法。 接口是Java语言用来实现多重继承的一种机制。

(3)修饰符 类的修饰符用来说明类的特殊性质,分为 访问控制符 抽象类说明符 最终类说明符

2.声明类体 类头定义了类的性质,类体则定义了类的具体内容,包括类的属性和方法。 (1)类的属性 一个类的属性描述了该类内部的信息,又称为类的静态属性。 类属性为简单变量: [修饰符] 变量类型 变量名 [=变量初值] 类属性为对象的语法: [修饰符] 类名 对象名 [=new 类名(实际参数列表)] 注:若使用另一个类的对象作为当前所定义的类的属性,则一定要保证这“另一个类”在当前类中是可见的,即它可以被当前类所引用。

类属性的修饰符包括: 访问控制符 静态修饰符static 最终修饰符final 易失修饰符volatile 过渡修饰符transient。

(2)类的方法 类的方法,又称为成员函数,用来规定类属性上的操作,实现类的内部功能的机制,同时也是类与外界进行交互的重要窗口。 Java中声明方法的语法: [修饰符] 返回值类型 方法名(参数列表) Throws 例外名1,例外名2,…… { 方法体: 局部变量声明; 语句序列; }

方法的修饰符包括: 访问控制符 静态修饰符static 抽象修饰符abstract 最终修饰符final 同步修饰符synchronous 本地修饰符native。 类中定义的方法通常起到两种作用:一是围绕着类的属性进行各种操作;二是与其他的类或对象进行数据交流、消息传递等操作。

5.2 创建类的实例对象 创建对象使用关键字运算符new。 类名 对象名=new 类名(参数); 例5.1

5.3 构造函数 构造函数是类的一种特殊方法,它的特殊性主要体现在如下的几个方面: 构造函数的方法名与类名相同。 构造函数没有返回类型。 5.3 构造函数 构造函数是类的一种特殊方法,它的特殊性主要体现在如下的几个方面: 构造函数的方法名与类名相同。 构造函数没有返回类型。 构造函数的主要作用是完成对类对象的初始化工作。 在创建一个类的新对象的同时,系统会自动调用该类的构造函数为新对象初始化。 注:Java在声明类时,可以不定义构造函数,系统会自动为该类生成一个默认的构造函数。此时这个构造函数的名字与类名相同,没有任何形式参数,也不完成任何操作。

5.4 访问控制修饰符 在定义类、属性和方法时,所有修饰符被放在语句的最前面。 若有一个以上的修饰符同时修饰这个类、属性和方法,则将这些修饰符并列并用空格互相隔开。 修饰符1 … 修饰符N class 类名{…} 修饰符1 … 修饰符N 数据类型 属性名; 修饰符1 … 修饰符N 方法返回值类型 方法名(形式参数列有){…}

类的访问控制符只有一个public 属性和方法的访问控制符有: public private protected private protected

1.公共访问控制符public 对于同一个包中的类可以不需任何说明而方便地互相访问和引用。 在不同包中的类,只有它们都声明为public时,然后再在程序头部声明import后才可以被访问和引用相应的类。 注:用public修饰的类的属性称为公共属性,如果公共属性属于一个公共类,则它可以被所有的其他类所引用。 public修饰符会造成安全性和数据封装性下降,应尽量减少public属性的使用。

一个类作为整体对程序的其他部分可见,并不能代表类内的所有属性和方法也同时对程序的其他部分可见,前者只是后者的必要条件,类的属性和方法能否为所有其他类所访问,还要看这些属性和方法自己的访问控制符。 类中被设定为public的方法是这个类对外的接口部分,程序的其他部分通过调用它们达到与当前类交换信息、传递消息甚至影响当前类的作用。

2.缺省访问控制符 缺省访问控制符规定该类只能被同一个包中的类访问和引用,而不可以被其他包中的类使用。这种特性又称为包访问性。 类内的属性和方法如果没有访问控制符来限定,也说明它们具有包访问性,可以被同一个包中的其他类所访问和调用。

3.私有访问控制符private 用private修饰的属性或方法只能被该类自身所访问和修改,而不能被任何其他类,包括该类的子类来获取和引用。 当其他类想要获取这些私有成员时,需要借助于类的方法来实现。

4.保护访问控制符protected 用protected修饰的成员变量可以被三种类所引用:该类自身、与它在同一个包中的其他类、在其他包中的该类的子类。 使用protected修饰符的主要作用是允许其他包中的它的子类来访问父类的特定属性。

5.私有保护访问控制符private protected 用此修饰符的成员变量可以被两种类访问和引用:一种是该类本身;二是该类的所有子类,不管这些子类是否与该类在同一个包中。

类 属性与方法 public 缺省 A B protected B+C Private protected C+D E+D private D

5.5 静态属性、静态方法与静态初始化器 1.静态属性 被static修饰的属性称为静态属性,这类属性的一个最本质的特点是:它们是类的属性,而不属于任何一个类的具体对象。 静态属性是一个公共的存储单元,任何一个类的对象访问它时,取到的都是相同的数值,同样任何一个类的对象去修改它时,也都是在对同一个内存单元做操作。 见例ch05/Employee.java

2.静态方法 static修饰符修饰的属性是属于类的公共属性; 用static修饰符修饰的方法是属于整个类的方法;

声明一个方法的static至少有三重含义: 调用这个方法时,应该使用类名做前缀,而不是某一个具体的对象名; 非static的方法是属于某个对象的方法,在这个对象创建时对象的方法在内存中拥有自己专用的代码段;而static的方法是属于整个类的,它在内存中的代码段将随着类的定义而分配和装载,不被任何一个对象专有; Static方法只能处理static类型的数据。

3.静态初始化器 静态初始化器是由关键字static引导的一对大括号括起的语句组。 静态初始化器与构造函数的三点区别: (1)构造函数是对每个新创建的对象初始化,而静态初始化器是对每个类进行初始化; (2)构造函数是在用new运算符产生新对象时由系统自动执行,而静态初始化器则是在它所属的类加载入内存时由系统调用运行的; (3)不同于构造函数,静态初始化器不是方法,没有方法名、返回值和参数列表。

5.6 抽象类与抽象方法 1.抽象类 当一个类被声明为abstract时,这个类被称为抽象类。 所谓抽象类就是没有具体实例对象的类。 抽象类是它的所有子类的公共属性的集合。 使用抽象类的一大优点就是可以利用这些公共属性来提高开发和维护程序的效率。

2.抽象方法 作为类修饰符,abstract声明了一种没有具体对象的,出于组织概念的层次关系需要而存在的抽象类。 注:具体的实现方法由各个子类来实现。 P111

5.7 最终类、最终属性、最终方法与终结器 1.最终类 如果一个类被final修饰符所修饰和限定,说明这个类不可能有子类。 2.最终属性 final就是用来修饰常量的修饰符,一个类的成员变量如果被声明为final,那么它的取值在程序的整个执行过程中都不会改变,也就是一个常量。

用final修饰符说明常量时,需要注意以下几点: 1)需要说明常量的数据类型; 2)需要同时指出常量的具体取值; 3)因为所有类对象的常量成员,其数值都固定一致,为了节省空间,常量通常都被声明为static。

3.最终方法 final修饰符所修饰的类方法,是功能和内部语句都不能被更改的最终方法。即是不能被当前类的子类重载的方法。 注:所有已被private修饰符限定为私有的方法,以及所有包含在final类中的方法,都被缺省地认为是final的。

4.终结器 终结器是回收对象时执行的方法。 protected void finalize(){}

5.8 其他修饰符及修饰符的混合使用 1.volatile修饰符

2.native修饰符 native修饰符一般用来声明用其他语言写方法体并具体实现方法功能的特殊的方法。其他语言包括C,C++,fortran,汇编等。 由于native的方法的方法体使用其他语言在程序外部写成,所以所有的native方法都没有方法体,而用一个分号代替。 在java中使用其他语言编写模块作为类方法,目的有两个: 一、充分利用已经存在的程序功能模块和避免重复工作。 二、可以利用native方法来提高运算速度。

3.synchronized修饰符 synchronized修饰符修饰的类方法,如果是一个类的方法(即static的方法),那么在调用执行前,将把系统类Class中对应当前类的对象加锁; 如果synchronized修饰的是一个对象的方法(未用static方法),则这个方法在被调用执行前,将把当前对象加锁。 synchronized修饰符主要用于多线程共存的程序中的协调和同步。

4.修饰符的混合使用 大多数情况下,修饰符是可以混合使用的。但是下面一些修饰符混用时需要注意: abstract不能与final并列修饰同一个类; abstract不能与private、static、final或native并列修饰同一个方法; abstract类中不能有private的成员(包括属性和方法); abstract方法必须在abstract类中; static方法中不能处理非static属性。