第1章 Delphi简介

Size: px
Start display at page:

Download "第1章 Delphi简介"

Transcription

1 第 3 章 Java 面向对象编程机制

2 Java 核心技术 计算机程序告诉计算机应该做什么 计算机执行的任何操作都是由程序控制的 程序设计是将计算机要执行的操作或者计算机要解决的问题转变成程序的过程 程序设计的过程主要分为面向过程编程和面向对象编程两种风格, 本书讲解的 Java 语言编程属于面向对象编程技术 本章要点 面向对象编程的基本思想 类与对象 抽象类与接口 Java 简单程序 学习目标 理解面向对象编程的基本思想 掌握 Java 运行环境的安装和环境变量的配置 掌握类与对象的概念及创建方式 掌握接口与抽象类的声明及创建方法 掌握 Java 程序的分类与运行步骤 3.1 面向对象编程的基本思想 程序员可以用各种程序语言编写指令, 有些语言是计算机直接能理解的, 有些则需经过中间的 翻译 步骤 无论如何, 程序设计的核心是数据的处理 基于数据处理方式的不同, 可将程序设计过程分为面向过程的程序设计和面向对象的程序设计 其中, 传统的面向过程的编程设计思路是先设计一组函数, 用来解决一个问题, 然后再确定函数中需要处理数据的相应存储位置, 即 算法 + 数据结构 = 程序 而面向对象编程(Object Oriented Programming,OOP) 的思路恰好相反, 是先确定要处理的数据, 然后再设计处理数据的算法, 最后将数据和算法封装在一起, 构成类与对象 面向对象技术是一种设计和构造软件的全新技术, 它使计算机解决问题的方式更符合人类的思维方式, 更能直接地描述客观世界, 通过增加代码的可重用性 可扩充性和程序自动生成功能来提高编程效率, 并且能够大大减少软件维护的开销, 所以被越来越多的软件设计人员接受 面向对象技术是一种新的软件技术, 从 20 世纪 60 年代提出面向对象的概念, 到现在已发展成为一种比较成熟的编程思想, 并且逐步成为目前软件开发领域的主流技术 同时, 它并不局限于程序设计方面, 也已经成为软件开发领域的一种方法论 它对信息科学 软件工程 人工智能和认知科学等都产生了重大影响, 尤其在计算机科学与技术的各个方面, 影响深远 通过面向对象技术, 可以将客观世界直接映射到面向对象求解空间, 从而为软件设计和系统开发带来革命性影响 在面向对象程序设计方法出现之前, 程序员用面向过程的方法开发程序 面向过程的方法把密切相关 相互依赖的数据和对数据的操作相互分离, 这种实质上的依赖与形式上 56

3 第 3 章 Java 面向对象编程机制 的分离使得大型程序不但难于编写, 而且难于调试和修改 在多人合作中, 程序员之间很 难读懂对方的代码, 更谈不上代码的重用 由于现代应用程序规模越来越大, 对代码的可 重用性与易维护性的要求也相应提高 面向对象技术便应运而生了 面向对象技术是一种以对象为基础, 以事件或消息来驱动对象执行处理的程序设计技 术 它以数据为中心, 而不是以功能为中心来描述系统, 数据相对于功能而言, 具有更强 的稳定性 它将数据和对数据的操作封装在一起, 作为一个整体来处理, 采用数据抽象和 信息隐蔽技术, 将这个整体抽象成一种新的数据类型, 称为类, 并且考虑不同类之间的联 系和类的重用性 类的集成度越高, 就越适合大型应用程序的开发 另一方面, 面向对象 程序的控制流程由运行时各种事件的实际发生来触发, 而不再由预定顺序来决定, 这更符 合实际 事件驱动程序的执行围绕消息的产生与处理, 靠消息循环机制来实现 更重要的 是, 利用不断扩充的框架产品 MFC(Microsoft Foundation Classes), 在实际编程时可以采用 搭积木的方式来组织程序, 站在 巨人 肩上实现自己的愿望 面向对象的程序设计方法 使得程序结构清晰 简单, 提高了代码的重用性, 有效地减少了程序的维护量, 提高了软 件的开发效率 例如, 可以用面向对象技术来解决学生管理方面的问题 此时重点应该放在学生上, 要了解在管理工作中学生的主要属性 要对学生做些什么操作等, 并且把它们作为一个整 体来对待, 形成一个类, 称为学生类 作为学生类的实例, 可以建立许多具体的学生, 而 每一个具体的学生就是学生类的一个对象 学生类中的数据和操作可以提供给相应的应用 程序共享, 还可以在学生类的基础上派生出大学生类 中学生类或小学生类等, 实现代码 的高度重用 在结构上, 面向对象程序与面向过程程序有很大不同 面向对象程序由类的定义和类 的使用两部分组成, 在主程序中定义各对象, 并规定它们之间传递消息的规律, 程序中的 一切操作都是通过向对象发送消息来实现的, 对象接到消息后, 启动消息处理函数, 完成 相应的操作 类与对象是面向对象程序设计中最基本且最重要的两个概念, 在 3.2 节中, 将详细介 绍类与对象 下面使用三种例子, 来比较两种方法学的区别, 各例程结果基本相同 例 3.1 用面向过程的 C 语言实现两数相加 : #include <stdio.h> int sum(int x, int y) { return x+y; ; void main() { int a=3,b=4,c=5,d=6; printf("a+b=%d\n", sum(a,b)); printf("c+d=%d\n", sum(c,d)); 例 3.2 用过程化的面向对象 C++ 语言实现 : #include <iostream.h> class Calculate { 57

4 Java 核心技术 public: int sum(int x, int y) { return x+y; ; void main() { int a=3,b=4,c=5,d=6; Calculate obj; cout<<obj.sum(a,b)<<endl; cout<<obj.sum(c,d)<<endl; 例 3.3 用纯面向对象的 Java 语言实现 : class Calculate { int sum(int x, int y) { return x+y; Calculate obj = new Calculate(); int a=3, b=4, c=5, d=6; System.out.println(obj.sum(a,b)); System.out.println(obj.sum(c,d)); 3.2 类与对象 类与对象 与人们认识客观世界的规律一样, 面向对象技术认为, 客观世界是由各种各样的对象组成的, 每种对象都有各自的内部状态和运动规律, 不同对象间的相互作用和联系就构成了各种不同的系统, 构成了客观世界 在面向对象程序中, 客观世界被描绘成一系列完全自治 封装的对象, 这些对象通过外部接口访问其他对象 可见, 对象是组成一个系统的基本逻辑单元, 是一个有组织形式的含有信息的实体 而类是创建对象的样板, 在整体上代表一组对象, 编程时设计类而不是设计对象, 这样可以避免重复编码 因为类只需要编码一次, 就可以创建本类的所有对象 对象 (Object) 由属性 (Attribute) 和行为 (Action) 两部分组成 对象只有在具有属性和行为的情况下才有意义, 属性是用来描述对象静态特征的一个数据项, 行为是用来描述对象动态特征的一个操作 对象是包含客观事物特征的抽象实体, 是属性和行为的封装体, 在程序设计领域, 可以用 对象 = 数据 + 作用于这些数据上的操作 这一公式来表达 类 (Class) 是具有相同属性和行为的一组对象的集合, 它为属于该类的全部对象提供了统一的抽象描述, 其内部包括属性和行为两个主要部分, 类是对象集合的再抽象 类与对象的关系如同一个模具与用这个模具铸造出来的铸件之间的关系 类给出了属于该类的全部对象的抽象定义, 而对象则是符合这种定义的一个实体 所以, 一个对象又 58

5 称作类的一个实例 (Instance) 第 3 章 Java 面向对象编程机制 在面向对象程序设计中, 类的确定与划分非常重要, 是软件开发中关键的一步, 划分 的结果会直接影响到软件系统的质量 如果划分得当, 既有利于程序进行扩充, 又可以提 高代码的可重用性 因此, 在解决实际问题时, 需要正确地进行分 类 理解一个类究 竟表示哪一组对象, 如何把实际问题中的事物汇聚成一个个 类, 而不是一组数据 这 是面向对象程序设计中的一个难点 类的确定和划分并没有统一的标准和固定的方法, 基 本上依赖设计人员的经验 技巧以及对实际问题的把握 但有一个基本原则 : 寻求一个大 系统中事物的共性, 将具有共性的系统成分确定为一个类 确定类的步骤包括 : 第一步, 要判断该事物是否有多个实例, 如果有, 则它是一个类 ; 第二步, 要判断类的实例中有没 有绝对的不同点, 如果没有, 则它是一个类 另外, 还要知道什么事物不能被划分为类 不能把一组函数组合在一起构成类, 也就 是说, 不能把一个面向过程的模块直接变成类 类和对象是 OOP 中最基本的两个概念, 其实它们是比较容易理解的, 简而言之, 类 是对象的模板, 对象是类的具体实现 对象创建即是实例化, 实例化是将类的属性设定为确定值的过程, 是 一般 到 具 体 的过程 ; 类的定义即是抽象, 抽象是从特定的实例中抽取共同的性质以形成一般化概 念的过程, 是 具体 到 一般 的过程 1. 类的定义 关于 类, 具有四个方面的含义 : 类是具有共同属性和行为的对象的抽象 类可以定义为数据和方法的集合 类也称为模板, 因为它们提供了对象的基本框架 类是对象的类型, 在语句中相当于数据类型使用 Java 中, 类定义的一般格式为 : [ 类修饰符 ] class < 类名称 > [extends < 父类名 >] [implements < 接口名 >] { [static { ] // 静态块 [ 成员修饰符 ] 数据类型成员变量 1; [ 成员修饰符 ] 数据类型成员变量 2; // 其他成员变量 [ 成员修饰符 ] 返回值类型成员方法 1( 参数列表 ) { [ 成员修饰符 ] 返回值类型成员方法 2( 参数列表 ) { // 其他成员方法 例 3.4 举例说明类的定义方法, 定义一个描述圆的类, 并能根据给定的半径计算 和显示圆的面积 代码如下 : public class Circle { // 类开始 private float fradius; // 成员变量 final float PI = 3.14f; // 定义常变量 PI 59

6 Java 核心技术 void setradius(float fr) { // 设置圆半径 fradius = fr; void showarea() { // 显示圆面积 System.out.println("The area of circle is " + fradius*fradius*pi); public static void main(string[ ]args) { // 主方法, 即程序入口 Circle circle = new Circle(); // 创建圆类的对象 circle.setradius(5); // 引用对象方法, 设置圆的半径 circle.showarea(); // 引用对象方法, 显示圆的面积 运行结果 : The area of circle is 78.5 在 Java 源程序代码中, 除类模块之外, 不包含任何游离于类模块之外的成分, 如文件 级变量和函数等 2. 对象的创建 关于 对象, 具有两方面的含义 : 在现实世界中, 对象是客观世界中的一个实体 在计算机世界中, 对象是一个可标识的存储区域对象, 相当于变量 Java 中, 对象创建的一般格式为 : < 类名称 > < 对象名称 > = new < 类名称 >(< 参数列表 >); 例如, 上面例子中, 创建圆 Circle 的对象 circle 的代码为 : Circle circle = new Circle() 在 Java 语言中, 规定类中的任何资源都是封装在类内部的, 只有类内部成员才有权力 调用和使用, 其他外部类或者函数, 包括主函数 Main, 均无权直接访问, 因此有了类相关 对象的机制, 只有指向某类的对象才有权力调用类中的成员变量和成员函数, 其调用格式 如下 : 对象名. 成员变量对象名. 成员方法 () 例如, 上面例子中的两句代码 : circle.setradius(5); circle.showarea(); // 引用对象方法, 设置圆的半径 // 引用对象方法, 显示圆的面积 3. 成员变量成员变量声明或定义的完整格式为 : [ 成员访问修饰符 ] [ 成员存储类型修饰符 ] 数据类型成员变量 [ = 初值 ]; 格式说明如下 60

7 第 3 章 Java 面向对象编程机制 (1) 类的成员变量在使用前必须加以声明, 除了声明变量的数据类型外, 还需要说明 变量的访问属性和存储方式 访问修饰符包括 public protected private 和默认 ( 即不带访 问修饰符 ), 存储类型修饰符包括 static final volatile transient Java 中允许为成员变量 赋初值 (2) 成员变量根据在内存中的存储方式和作用范围, 可以分为类变量和实例变量 (3) 访问成员变量的格式为 对象. 成员变量, 如果考虑 static 关键字, 那么访问格 式可细化为 : 对象. 实例成员变量 或者 : 类名. 静态成员变量 例 3.5 使用成员变量的例子 : public class Circle { // 类开始 private float fradius; // 成员变量 void showradius() { // 显示半径 //int fradius; // 局部变量必须初始化 System.out.println("The Radius of circle is " + fradius); // 输出半径值 public static void main(string[]args) { // 主方法, 即程序入口 Circle circle = new Circle(); // 创建圆类的对象 circle.showradius(); // 引用对象方法, 显示圆的半径 运行结果 : The Radius of circle is 0.0 如果去掉代码第 4 行的注释, 运行结果为 : variable fradius might not have been initialized( 提示变量 fradius 尚未初始化 ) 4. 成员方法 成员方法声明的完整格式为 : [ 成员访问修饰符 ][ 成员存储类型修饰符 ] 数据类型成员方法 ([ 参数列表 ]) [throws Exception]; 成员方法定义的完整格式为 : [ 成员访问修饰符 ][ 成员存储类型修饰符 ] 数据类型成员方法 ([ 参数列表 ]) [throws Exception] { [< 类型 > < 局部变量 >;] 方法体语句 ; 成员方法格式的说明如下 61

8 Java 核心技术 (1) 类的成员方法的声明或定义前, 除了声明方法的返回值数据类型外, 还需要说明 方法的访问属性和存储方式 访问修饰符包括 public protected private 和缺省 存储类型修饰符包括 static final abstract native synchronized (2) 如果类体中一个方法只有声明, 没有定义 ( 即没有方法体 ), 则此方法是抽象的, 且类体和方法体前都须加 abstract (3) 访问成员方法的格式为 对象. 成员方法, 如果考虑 static 关键字, 那么访问格 式可细化为 : 对象. 实例成员方法 或者 : 类名. 静态成员方法 (4) 方法按返回值, 可分为无返回值的方法和有返回值的方法 例 3.6 方法返回值的作用 : public class Circle { // 类开始 private float fradius; // 成员变量 final float PI = 3.14f; // 定义常量 PI void setradius(float fr) { // 设置圆的半径 fradius = fr; float getarea() { // 这里增加了带返回值的方法 getarea() return fradius*fradius*pi; void showarea() { // 显示圆的面积 // 输出 getarea() 值 System.out.println("The area of circle is " + getarea()); // 主方法, 即程序入口 Circle circle = new Circle(); // 创建圆类的对象 circle.setradius(5); // 引用对象方法, 设置圆的半径 circle.showarea(); // 引用对象方法, 显示圆的面积 (5) 方法的参数列表 : 在声明方法中的参数时, 需要说明参数的类型和个数 参数之 间用逗号隔开, 参数的数据类型可以是 Java 认可的任何数据类型 参数名称在它的作用范 围内是唯一的, 即同一个方法中的参数名称不能相同 例 3.7 对象作为方法的参数 : class Complex { int real, virtual; public Complex(int r, int v) { real = r; virtual = v; 62

9 第 3 章 Java 面向对象编程机制 void showvalue() { System.out.println(" 复数值为 :" + real + "." + virtual); static Complex addcomplex(complex c1, Complex c2) { Complex c = new Complex(0, 0); c.real = c1.real+c2.real; c.virtual = c1.virtual + c2.virtual; return c; public class ObjectParaDemo { Complex c, c1, c2; c1 = new Complex(2,3); c2 = new Complex(4,5); c = Complex.addComplex(c1,c2); c.showvalue(); 例 3.8 通过引用改变对象的值 : class Timer { int minute, second; public Timer(int m, int s) { minute = m; second = s; void showtime() { System.out.println(" 现在的时间是 :" + minute + " 分 " + second + " 秒 "); static void swaptime(timer t1, Timer t2) { Timer t = t1; // 定义了局部变量 t, 利用 t 交换 t1 和 t2 的值 t1=t2; t2=t; public class ReferenceDemo { Timer t1 = new Timer(9,10); Timer t2 = new Timer(11,12); t1.showtime(); t2.showtime(); System.out.println(" 使用 swaptime 方法交换 Timer 实例后 :"); Timer.swapTime(t1,t2); t1.showtime(); t2.showtime(); 例 3.9 方法的重载 : 63

10 Java 核心技术 public class Sum { static int add(int x, int y) { return x+y; static int add(int x, int y, int z) { return x+y+z; static float add(float x, float y) { return x+y; System.out.println(add(2,3)); System.out.println(add(2,3,4)); System.out.println(add(2.1f,3.2f)); 5. 构造方法 构造方法是一种特殊的方法, 用来创建类的实例, 用于给对象进行初始化, 它具有针 对性, 是一种特殊的成员函数 一个类在定义时, 如果没有定义过构造函数, 那么该类中 会自动生成一个空参数的构造函数, 完成初始化 如果在类中自定义了构造函数, 那么默 认的构造函数就没有了 一个类中, 可以有多个构造函数, 因为它们的函数名称都相同, 所以只能通过参数列 表来区分 所以, 一个类中如果出现多个构造函数, 它们的存在是以重载体现的 声明构造方法时, 可以附加访问修饰符, 但没有返回值, 不能指定返回类型 构造方法名必须与类同名 调用构造方法创建实例时, 用 new 运算符加构造方法名的 形式创建, 下面通过几个例子说明构造方法的使用 例 3.10 使用普通成员方法来为对象的成员属性赋值 : public class Timer { int hour, minute, second; void settime(int h, int m, int s) { // 用来赋值的成员方法 hour = h; minute = m; second = s; void showtime() { System.out.println( " 现在的时间是 :" + hour + ":" + minute + ":" + second); Timer t1 = new Timer(); t1.settime(10, 11, 12); t1.showtime(); 64

11 第 3 章 Java 面向对象编程机制 例 3.11 使用构造方法的例子 : public class Timer { int hour, minute, second; public Timer(int h, int m, int s) { // 自定义的构造方法 hour = h; minute = m; second = s; void showtime() { System.out.println( " 现在时间是 :" + hour + ":" + minute + ":" + second); Timer t1 = new Timer(10, 11, 12); t1.showtime(); 例 3.12 使用默认构造方法的例子 : public class Timer { int hour, minute, second; //public Timer() { // 默认构造方法, 此方法可以省略 Timer t1 = new Timer(); 例 3.13 默认构造方法与自定义构造方法的例子 : public class Timer { int hour, minute, second; public Timer() { // 默认构造方法, 此例中不能省略 // 下面的赋值语句不写也可, 创建实例时, 会按照成员变量的默认值规则赋值 hour = 0; minute = 0; second = 0; public Timer(int h, int m, int s) { // 自定义的构造方法 hour = h; minute = m; second = s; void showtime() { System.out.println( " 现在时间是 :" + hour + ":" + minute + ":" + second); Timer t1 = new Timer(10, 11, 12); t1.showtime(); Timer t2 = new Timer(); // 调用了默认构造方法创建实例 65

12 Java 核心技术 t2.showtime(); 6.Java 访问控制修饰符 面向对象 封装 的基本思路是, 将成员属性设为 private, 使用户不能直接访问 ; 将 成员方法设为 public, 然后通过 public 成员方法访问 private 成员属性 封装虽然最大限度 地保证了数据访问的安全, 但 private 成员仅可供本类内的方法访问, 限制太严格 为了能 够灵活控制这些访问需求, 面向对象编程提供了其他一些访问控制修饰符, 来控制在类 包内外部的访问权限 在 Java 中, 访问控制共有四个等级, 分别是 :public protected private 默认 按照访问控制权限的高低排序为 :public protected 默认 private 功能说明如下 : 当成员被声明为 public 时, 该成员可以被程序的任何代码模块访问 当成员被声明为 protected 时, 该成员只可以被该类子类的程序代码模块访问 当缺省, 即没有访问修饰符时, 该成员只可以被该类所在包的类的程序代码模块 访问 当成员被声明为 private 时, 该成员只可以被本类程序代码模块访问 例 3.14 private 访问控制修饰符的作用 : class Access { private int data; //private 属性成员只能被本类访问 void show() { System.out.println("data's value is : " + data); public class AccessDemo { Access obj = new Access(); obj.show(); System.out.println("object's data is :" + obj.data); 程序无法编译, 会提示如下错误信息 : AccessDemo.java: data has private access in Access 错误提示表明, 代码中访问了一个 Access 类的私有属性 data, 原因是 private 属性成 员只能被本类访问, 将第 2 行代码 data 成员变量的 private 修饰符去掉, 即可正常运行 例 3.15 理解 main() 方法在类中的地位 : public class AccessDemo { private int data; void show() { System.out.println("data's value is : " + data); 66

13 第 3 章 Java 面向对象编程机制 AccessDemo obj = new AccessDemo(); obj.show(); System.out.println("object's data is:" + obj.data); // 调用私有成员 运行结果 : data's value is: 0 object's data is:0 虽然 data 成员变量仍然是 private, 但因为 main() 方法与 data 在同一类体中, 可以访 问 这说明了一个事实 :main() 方法也是类的成员方法, 只不过 main() 方法和类的构造方 法不参与继承 7.this 和 super 关键字 this 是对象的别名, 是当前类的当前实例的引用, 而 super 是当前类父类实例的引用 (1) this 关键字 this 用于类的成员方法的内部, 用于代替调用这个方法的实例 this 本质上是一个指 针, 指向操作当前方法的那个实例, 这与 C++ 的 this 指针完全相同, 但因为 Java 中没有显 式指针, 我们可以把它理解成引用 ( 即隐式指针 ) 如果方法中的成员调用前没有操作实例 名, 实际上默认省略了 this 例 3.16 this 关键字的使用 : class Children { int age; //age 是成员变量, 属于全局变量 void setage(int age) { //age 是局部变量 this.age = age; // 此处的 this.age 代表成员变量 //this 代表代码第 8 行的实例 children public static void main(string args[]) { Children children = new Children(); children.setage(9); // 实例 children 操作了 setage 方法 (2) super 关键字 super 有两种调用形式 : super super() // 代表父类的实例 // 代表父类的构造方法 例 3.17 super 关键字的使用 : class Children extends Parent { String cname; // 子女姓名 char csex; // 子女性别 Children(String pname, String cname, char csex) { super(pname); // 利用 super() 调用父类构造方法 67

14 Java 核心技术 this.cname = cname; //this.strname 表示当前类成员 this.csex = csex; //this.csex 表示当前类成员 /*--- 定义布尔型方法, 判断 this 是否为 Children 的对象的引用 ---*/ boolean ischildren() { if(this instanceof Children) return true; else return false; void showfamilyinfo() { System.out.println(" 父母名称 :" + super.pname);// 用 super 引用父类实例 System.out.println(" 子女名称 :" + cname); System.out.println(" 子女性别 :" + csex); Children children = new Children(" 刘强, 王丽 ", " 刘华 ", 'F'); System.out.println("this 为当前类的实例吗?"+children.isChildren()); children.showfamilyinfo(); 运行结果 : this 为当前类的实例吗?True 父母名称 : 刘强, 王丽子女名称 : 刘华子女性别 :F 面向对象技术的基本特征 面向对象技术强调在软件开发过程中面向客观世界或问题域中的事物, 采用人类在认识客观世界的过程中普遍运用的思维方法, 直观 自然地描述客观世界中的有关事物 面向对象技术的基本特征主要有抽象性 封装性 继承性和多态性等 1. 抽象性把众多的事物进行归纳 分类, 是人们在认识客观世界时经常采用的思维方法, 物以类聚, 人以群分 就是分类的意思, 分类所依据的原则是抽象 抽象 (Abstract) 就是忽略事物中与当前目标无关的非本质特征, 更注意与当前目标有关的本质特征 从而找出事物的共性, 并把具有共性的事物划为一类, 得到一个抽象的概念 例如, 在设计一个学生成绩管理系统的过程中, 考察学生张华这个对象时, 就只关心他的班级 学号 成绩等, 而忽略他的身高 体重等信息 因此, 抽象性是对事物的抽象概括描述, 实现了客观世界向计算机世界的转化 将客观事物抽象成对象及类, 是比较难的过程, 也是面向对象方法的第一步 例如, 将学生抽象成对象及类的过程, 如图 3-1 所示 68

15 第 3 章 Java 面向对象编程机制 学生 1 学生 2 学生 3 学生 4 学生 5 M 抽象 属性 : 服务 : 班级查询各属性学号修改各属性姓名打印各属性专业成绩 M 创建 学生对象 1 学生对象 2 学生对象 3 学生对象 4 学生对象 5 M 图 3-1 抽象过程 2. 封装性封装 (Encapsulation) 就是把对象的属性和行为结合成一个独立的单位, 并尽可能隐蔽对象的内部细节 图 3-1 中的学生类也反映了封装性 封装有两个含义 : 一是把对象的全部属性和行为结合在一起, 形成一个不可分割的独立单位, 对象的属性值 ( 除了公有的属性值 ) 只能由这个对象的行为来读取和修改 ; 二是尽可能隐蔽对象的内部细节, 对外形成一道屏障, 与外部的联系只能通过外部接口实现 封装的信息隐蔽作用反映了事物的相对独立性, 可以只关心它对外所提供的接口, 即能做什么, 而不注意其内部细节, 即怎么提供这些服务等 例如, 用陶瓷封装起来的一块集成电路芯片, 其内部电路是不可见的, 而且使用者也不关心它的内部结构, 只关心芯片引脚的个数 引脚的电气参数及引脚提供的功能, 利用这些引脚, 使用者将各种不同的芯片连接起来, 就能组装成具有一定功能的模块 封装的结果, 使对象以外的部分不能随意存取对象的内部属性, 从而有效地避免了外部错误对它的影响, 大大减小了查错和排错的难度 另一方面, 当对象内部进行修改时, 由于它只通过少量的外部接口对外提供服务, 因此, 同样减小了内部的修改对外部的影响 同时, 如果一味地强调封装, 则对象的任何属性都不允许外部直接存取, 要增加许多没有其他意义 只负责读或写的行为, 这为编程工作增加了负担, 增加了运行开销, 并且使得程序显得臃肿 为了避免这一问题, 在语言的具体实现过程中, 应使对象有不同程度的可见性, 进而与客观世界的具体情况相符合 封装机制将对象的使用者与设计者分开, 使用者不必知道对象行为实现的细节, 只需要用设计者提供的外部接口, 让对象去做 封装的结果, 实际上隐蔽了复杂性, 并提供了代码重用性, 从而降低了软件开发的难度 3. 继承性客观事物既有共性, 也有特性 如果只考虑事物的共性, 而不考虑事物的特性, 就不能反映出客观世界中事物之间的层次关系, 不能完整 正确地对客观世界进行抽象描述 运用抽象的原则就是舍弃对象的特性, 提取其共性, 从而得到适合一个对象集的类 如果在这个类的基础上, 再考虑抽象过程中被舍弃的一部分对象的特性, 则可形成一个新的类, 这个类具有前一个类的全部特征, 是前一个类的子集, 形成一种层次结构, 即继承结构, 如图 3-2 所示 69

16 Java 核心技术 图 3-2 类的继承结构 继承 (Inheritance) 是一种联结类与类的层次模型 继承性是指特殊类的对象拥有其一般 类的属性和行为 继承意味着 自动地拥有, 即特殊类中不必重新定义已在一般类中定 义过的属性和行为, 而它却自动地 隐含地拥有其一般类的属性与行为 继承允许和鼓励 类的重用, 提供了一种明确表述共性的方法 一个特殊类既有自己新定义的属性和行为, 又有继承下来的属性和行为 尽管继承下来的属性和行为是隐式的, 但无论在概念上还是 在实际效果上, 都是这个类的属性及行为 当这个特殊类又被它更下层的特殊类继承时, 它继承来的和自己定义的属性及行为又被下一层的特殊类继承下去 因此, 继承是传递 的, 体现了大自然中特殊与一般的关系 下面举例说明类继承机制的定义方法 例 3.18 类继承的作用 : class Children extends Parent { int age; // 子类自定义的成员变量 Children(String cname, int cage) { // 构造方法 //super(); // 默认省略了此语句 name = cname; //name 属性继承自父类 Parent age = cage; Children children = new Children(" 王强 ", 10); children.showinfo(); //showinfo() 方法继承自父类 Parent 运行结果 : 姓名 : 王强 由此可见, 继承是对客观世界的直接反映, 通过类的继承, 能够实现对问题的深入抽 象描述, 反映出人类认识问题的发展过程 在软件开发过程中, 继承性实现了软件模块的可重用性 独立性, 缩短了开发周期, 提高了软件开发的效率, 同时, 使软件易于维护和修改 4. 多态性 面向对象设计借鉴了客观世界的多态性, 体现在不同的对象收到相同的消息时, 会产 生多种不同的行为方式 例如, 在一般类 几何图形 中定义了一个行为 绘图, 但并 不确定执行时到底画一个什么图形 特殊类 椭圆 和 多边形 都继承了几何图形类的 70

17 第 3 章 Java 面向对象编程机制绘图行为, 但其功能却不同, 一个是要画出一个椭圆, 另一个是要画出一个多边形 这样, 一个绘图消息发出后, 椭圆 多边形等类的对象接收到这个消息后, 各自执行不同的绘图函数, 如图 3-3 所示, 这就是多态性的表现 图 3-3 多态性示意 具体地说, 多态性 (Polymorphism) 是指类中同一函数名对应多个具有相似功能的不同 函数, 可以使用相同的调用方式来调用这些具有不同功能的同名函数 通过类的继承, 子 类可以使用父类的成员变量和成员方法 但当子类重新定义了与父类同名的方法时, 子类 方法的功能将会覆盖父类同名方法的功能, 这叫作方法 重写 同样, 当子类的成员变 量与父类的成员变量同名时, 在子类中将隐藏父类同名变量的值, 这叫作变量覆盖 另 外, 还须注意下面的两条限制 (1) 重写的方法不能比被重写的方法拥有更严格的访问权限 (2) 重写的方法不能比被重写的方法产生更多的异常 例 3.19 成员方法重写 : class Children extends Parent { String name; // 子女姓名 int age; Children(String cname, char csex, int cage) { // 构造方法 //super(); // 默认省略了此语句 name=cname; sex=csex; age=cage; void showinfo() { // 显示子类实例信息, 重写了父类的 showinfo() 方法 System.out.println(" 孩子的姓名 :" + name); System.out.println(" 孩子的性别 :" + sex); System.out.println(" 孩子的年龄 :" + age); Children children = new Children(" 王强 ", 'M', 10); //System.out.println(" 子类信息如下 :"); children.showinfo(); 运行结果 : 孩子的姓名 : 王强 71

18 Java 核心技术 孩子的性别 :M 孩子的年龄 :10 继承性和多态性的结合, 可以生成一系列虽类似但却独一无二的对象 由于继承性, 这些对象共享许多相似的特征 ; 由于多态性, 针对相同的消息, 不同对象可以有独特的表 现方式, 实现特性化的设计 面向对象技术四大特征的充分运用, 为提高软件开发效率起着重要的作用 面向对象 技术可使程序员不必反复地编写类似的程序, 通过继承机制进行特殊类化的过程, 使得程 序设计变成仅对特殊类与一般类的差异进行编程的过程 当高质量的代码可重复使用时, 复杂性就得以降低, 效率则得到提高 不断扩充的 MFC 类库和继承机制能很大程度地提 高开发人员建立 扩充和维护系统的能力 面向对象技术将数据与操作封装在一起, 简化 了调用过程, 方便了维护, 并减少了程序设计过程中出错的可能性 继承性和封装性使得 应用程序的修改带来的影响更加局部化, 而且类中的操作是易于修改的, 因为它们被放在 唯一的地方 因此, 采用面向对象技术进行程序设计具有开发时间短 效率高 可靠性 好 所开发的程序更强壮等优点 3.3 接口和抽象类 72 在面向对象的概念中, 所有的对象都是通过类来描绘的, 但是, 并不是所有的类都是 用来描绘对象的, 也有一种类, 它没有包含足够的信息来描绘一个具体的对象, 这样的类 就是抽象类 抽象类往往用来表征我们在对问题领域进行分析 设计时得出的抽象概念, 是对一系 列看上去不同, 但是本质上相同的具体概念的抽象, 我们不能把它们实例化, 因此称为抽 象 比如, 我们要描述 水果, 它就是一个抽象, 它有质量 体积等一些共性, 但又缺 乏特性, 我们拿不出唯一一种能代表水果的东西, 因为苹果 橘子都不能代表水果, 此时 可用抽象类来描述它, 所以抽象类是不能够实例化的 当我们用某个类来具体描述 苹果 时, 这个类就可以继承描述 水果 的抽象类, 从而推导出 苹果 是一种 水果 在面向对象领域, 抽象类主要用来进行类型隐藏 我们可以构造出一组固定行为的抽 象描述, 但是, 这组行为却能够有任意个可能的具体实现方式 这个抽象描述就是抽象 类, 而这一组任意个可能的具体实现方式, 则表现为这个抽象类的所有派生类 接口和抽象类中的所有抽象方法不能有具体实现, 而应在它们的子类中实现所有的抽 象方法,Java 的设计者为抽象方法的灵活性考虑, 让每个子类可根据自己的需要来实现抽 象方法, 即要求必须有函数体 1. 抽象类的定义 抽象类 (Abstract Class) 的定义方式如下 : public abstract class AbstractClass { // 里面至少有一个抽象方法 public int t; // 普通数据成员 public abstract void method1(); // 抽象方法, 抽象类的子类在类中必须实现抽象类中的抽象方法

19 第 3 章 Java 面向对象编程机制 public abstract void method2(); public void method3(); // 非抽象方法 public int method4(); public int method4() {... // 抽象类中可以赋予非抽象方法默认的行为, 即方法的具体实现 public void method3() {... // 抽象类中可以赋予非抽象方法的行为, 即方法的具体实现 例 3.20 抽象类举例 : public abstract class State { // 抽象类 State public abstract void startup(vehicle vehicle); public abstract void stop(vehicle vehicle); // 继承抽象类 State public class VehicleMoveState extends State { public void startup(vehicle vehicle) { System.out.println(vehicle.getName() + " 已经在运动状态了 "); public void stop(vehicle vehicle) { System.out.println(vehicle.getName() + " 停止运动 "); vehicle.setstate(vehicle.getreststate()); // 继承抽象类 State public class VehicleRestState extends State { public void startup(vehicle vehicle) { System.out.println(vehicle.getName() + " 开始运动 "); vehicle.setstate(vehicle.getmovestate()); public void stop(vehicle vehicle) { System.out.println(vehicle.getName() + " 已经是静止状态了 "); public class Vehicle { static State movestate, reststate; static State state; String name; Vehicle(String name) { this.name = name; movestate = new VehicleMoveState(); reststate = new VehicleRestState(); state = reststate; // 车辆的默认状态是静止状态 public void startup() { state.startup(this); public void stop() { 73

20 Java 核心技术 state.stop(this); public void setstate(state state) { this.state = state; public State getmovestate() { return movestate; public State getreststate() { return reststate; public String getname() { return name; public class Application { public static void main(string args[]) { Vehicle carone = new Vehicle(" 卧铺车厢 "); Vehicle cartwo = new Vehicle(" 普通车厢 "); carone.startup(); cartwo.startup(); cartwo.stop(); carone.stop(); 2. 接口的定义 接口 (interface) 的定义方式如下 : public interface Interface { static final int i = 1; // 接口中不能有普通数据成员, 只能够有静态的不能被修改的数据成员,static 表示全局, //final 表示不可修改, 可以不用 static final 修饰, 会隐式声明为 static 和 final public void method1(); // 接口中的方法一定是抽象方法, 所以不用 abstract 修饰 public void method2(); // 接口中不能赋予方法的默认行为, 即不能有方法的具体实现 例 3.21 接口举例 : public interface TemperatureState { // 创建接口 TemperatureState public void showtemperature(); // 实现接口 TemperatureState public class HeightState implements TemperatureState { double n = 26; HeightState(int n) { if(n > 26) this.n = n; public void showtemperature() { System.out.println(" 现在温度是 " + n + " 属于高温度 "); 74

21 第 3 章 Java 面向对象编程机制 // 实现接口 TemperatureState public class MiddleState implements TemperatureState { double n = 10; MiddleState(int n) { if(n>0 && n<=26) this.n = n; public void showtemperature() { System.out.println(" 现在温度是 " + n + " 属于正常温度 "); // 实现接口 TemperatureState public class LowState implements TemperatureState { double n = 0; LowState(double n) { if(n <= 0) this.n = n; public void showtemperature() { System.out.println(" 现在温度是 " + n + " 属于低温度 "); public class Thermometer { TemperatureState state; public void showmessage() { System.out.println("***********"); state.showtemperature(); System.out.println("***********"); public void setstate(temperaturestate state) { this.state = state; public class Application { public static void main(string args[]) { TemperatureState state = new LowState(-12); Thermometer thermometer = new Thermometer(); thermometer.setstate(state); thermometer.showmessage(); state = new MiddleState(20); thermometer.setstate(state); thermometer.showmessage(); state = new HeightState(39); thermometer.setstate(state); thermometer.showmessage(); 75

22 Java 核心技术 3. 接口与抽象类的区别 (1) 接口的缺点 : 如果向一个 Java 接口加入一个新的方法, 所有实现这个接口的类都得编写具体的实现 (2) 接口的优点 : 一个类可以实现多个接口, 接口可以让这个类不仅具有主类型的行为, 而且具有其他的次要行为, 比如 HashMap 接口的主要类型是 Map, 而 Cloneable 接口使它具有一个次要类型, 这个类型说明它可以安全地克隆 (3) 抽象类的缺点 : 一个类只能由一个超类继承, 所以抽象类作为类型定义工具的效能大打折扣 (4) 抽象类的优点 : 具体类可从抽象类自动得到这些方法的默认实现 根据接口和抽象类各自的优缺点, 总结出抽象类与接口的区别如下 : 抽象类可以包含部分方法的实现, 这是抽象类优于接口的一个主要地方 Java 是单继承的, 每个类只能从一个抽象类继承, 但是每个类可以实现多个接口 使用接口还可以实现混合类型的类 接口可以继承多个接口, 即接口间可以多重继承 将类抽取出通用部分作为接口容易, 要作为抽象类则不太方便, 因为这个类有可能已经继承自另一个类 简而言之, 抽象类是一种功能不全的类, 接口只是一个抽象方法声明和静态不能被修改的数据的集合, 两者都不能被实例化 从某种意义上说, 接口是一种特殊形式的抽象类, 在 Java 语言中, 抽象类表示的是一种继承关系, 一个类只能继承一个抽象类, 而一个类却可以实现多个接口 在许多情况下, 如果不需要刻意表达属性上的继承的话, 接口确实可以代替抽象类 本章小结 本章主要介绍面向对象编程的重要机制 类 对象 抽象类和接口等, 更加深入地 体会 Java 语言的面向对象特征 习 题 (1) 上机练习题 请使用 Java 中的面向对象编程机制实现下列编程题目 题目一 : 某公司采用公用电话传递数据, 数据是四位的整数, 在传递过程中是加密的, 加密规则如下 每位数字都加上 5, 然后用和除以 10 的余数代替该数字, 再将第一位和第四位交换, 第二位和第三位交换 题目二 : 海滩上有一堆桃子, 五只猴子来分 第一只猴子把这堆桃子平均分为五份, 多了一个, 这只猴子把多的一个扔入海中, 拿走了一份 第二只猴子把剩下的桃子又平均分成五份, 又多了一个, 它同样把多的一个扔入海中, 拿走了一份 第三 第四 第五只猴子都是这样做的, 问海滩上原来最少有多少个桃子? (2) 简述 Java 中抽象类与接口的区别 76

OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数

OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数 复习 类的复用 组合 (composition): has-a 关系 class MyType { public int i; public double d; public char c; public void set(double

More information

OOP with Java 通知 Project 4: 4 月 19 日晚 9 点

OOP with Java 通知 Project 4: 4 月 19 日晚 9 点 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 4: 4 月 19 日晚 9 点 复习 类的复用 组合 (composition): has-a 关系 class MyType { public int i; public double d; public char c; public void set(double x) { d

More information

エスポラージュ株式会社 住所 : 東京都江東区大島 東急ドエルアルス大島 HP: ******************* * 关于 Java 测试试题 ******

エスポラージュ株式会社 住所 : 東京都江東区大島 東急ドエルアルス大島 HP:  ******************* * 关于 Java 测试试题 ****** ******************* * 关于 Java 测试试题 ******************* 問 1 运行下面的程序, 选出一个正确的运行结果 public class Sample { public static void main(string[] args) { int[] test = { 1, 2, 3, 4, 5 ; for(int i = 1 ; i System.out.print(test[i]);

More information

软件工程文档编制

软件工程文档编制 实训抽象类 一 实训目标 掌握抽象类的定义 使用 掌握运行时多态 二 知识点 抽象类的语法格式如下 : public abstract class ClassName abstract void 方法名称 ( 参数 ); // 非抽象方法的实现代码 在使用抽象类时需要注意如下几点 : 1 抽象类不能被实例化, 实例化的工作应该交由它的子类来完成 2 抽象方法必须由子类来进行重写 3 只要包含一个抽象方法的抽象类,

More information

OOP with Java 通知 Project 3: 3 月 29 日晚 9 点 4 月 1 日上课

OOP with Java 通知 Project 3: 3 月 29 日晚 9 点 4 月 1 日上课 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 3: 3 月 29 日晚 9 点 4 月 1 日上课 复习 Java 包 创建包 : package 语句, 包结构与目录结构一致 使用包 : import restaurant/ - people/ - Cook.class - Waiter.class - tools/ - Fork.class

More information

OOP with Java 通知 Project 4: 5 月 2 日晚 9 点

OOP with Java 通知 Project 4: 5 月 2 日晚 9 点 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 4: 5 月 2 日晚 9 点 复习 类的复用 组合 (composition): has-a 关系 class MyType { public int i; public double d; public char c; public void set(double x) { d =

More information

1 下列类头定义中, 正确的是 面向对象程序设计网络课程 A class x { } B public x extends y { } C public class x extends y {.} D class x extends y implements y1 { } 2 现有两个类 A B,

1 下列类头定义中, 正确的是 面向对象程序设计网络课程 A class x { } B public x extends y { } C public class x extends y {.} D class x extends y implements y1 { } 2 现有两个类 A B, 1 下列类头定义中, 正确的是 A class x B public x extends y C public class x extends y. D class x extends y implements y1 2 现有两个类 A B, 以下描述中表示 B 继承自 A 的是 (D ) A) class A extends B B) class B implements A C) class A

More information

无类继承.key

无类继承.key 无类继承 JavaScript 面向对象的根基 周爱 民 / aimingoo aiming@gmail.com https://aimingoo.github.io https://github.com/aimingoo rand = new Person("Rand McKinnon",... https://docs.oracle.com/cd/e19957-01/816-6408-10/object.htm#1193255

More information

Microsoft Word - 新1-12.doc

Microsoft Word - 新1-12.doc 实训 5 面向对象编程练习 实训 5 面向对象编程练习 5.1 实训目的 通过编程和上机实验理解 Java 语言是如何体现面向对象编程基本思想 以及如何创建类 和对象 了解成员变量和成员方法的特性 5.2 实训要求 编写一个体现面向对象思想的程序 编写一个创建对象和使用对象的方法的程序 5.3 实训内容 5.3.1 创建对象并使用对象 1 定义一个 Person 类 可以在应用程序中使用该类 成员属性

More information

模板

模板 制作人 : 张刚 目录 类和对象 面向对象程序设计基本特征 类的声明 构造方法 成员变量和方法 封装 继承 多态 包 访问控制 final static 抽象类和接口 内部类 沈阳工业大学软件学院 Java 课程教研组 Page 2 核心知识点 类 对象 三个基本特征 类的基本结构 成员变量 构造方法 成员方法 类实例 对象创建和操作 沈阳工业大学软件学院 Java 课程教研组 Page 3 1.

More information

OOP with Java 通知 Project 3 提交时间 3 月 29 日晚 9 点 Piazza Project 2 投票

OOP with Java 通知 Project 3 提交时间 3 月 29 日晚 9 点 Piazza Project 2 投票 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 3 提交时间 3 月 29 日晚 9 点 Piazza Project 2 投票 复习 创建对象 构造函数 函数重载 : 函数 = 函数名 + 参数列表 public class MyType { int i; double d; char c; void set(double x)

More information

新・解きながら学ぶJava

新・解きながら学ぶJava 481! 41, 74!= 40, 270 " 4 % 23, 25 %% 121 %c 425 %d 121 %o 121 %x 121 & 199 && 48 ' 81, 425 ( ) 14, 17 ( ) 128 ( ) 183 * 23 */ 3, 390 ++ 79 ++ 80 += 93 + 22 + 23 + 279 + 14 + 124 + 7, 148, 16 -- 79 --

More information

OOP with Java 通知 Project 4: 5 月 2 日晚 9 点

OOP with Java 通知 Project 4: 5 月 2 日晚 9 点 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 4: 5 月 2 日晚 9 点 复习 Java 包 创建包 : package 语句, 包结构与目录结构一致 使用包 : import restaurant/ - people/ - Cook.class - Waiter.class - tools/ - Fork.class - Table.class

More information

chap07.key

chap07.key #include void two(); void three(); int main() printf("i'm in main.\n"); two(); return 0; void two() printf("i'm in two.\n"); three(); void three() printf("i'm in three.\n"); void, int 标识符逗号分隔,

More information

OOP with Java 通知 Project 4: 推迟至 4 月 25 日晚 9 点

OOP with Java 通知 Project 4: 推迟至 4 月 25 日晚 9 点 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 4: 推迟至 4 月 25 日晚 9 点 复习 Protected 可以被子类 / 同一包中的类访问, 不能被其他类访问 弱化的 private 同时赋予 package access class MyType { public int i; public double d; public

More information

Microsoft PowerPoint - 08_OO_CJC.ppt

Microsoft PowerPoint - 08_OO_CJC.ppt C++ 中的 Hello World! C 程序设计语言 第 8 章 OO 与 C++ Java C# 孙志岗 sun@hit.edu.cn http://sunner.cn 兼容 C 语言的 : #include int main() printf("hello,, world!\n"); return 0; 更具 C++ 味道的 : #include int

More information

SDK 概要 使用 Maven 的用户可以从 Maven 库中搜索 "odps-sdk" 获取不同版本的 Java SDK: 包名 odps-sdk-core odps-sdk-commons odps-sdk-udf odps-sdk-mapred odps-sdk-graph 描述 ODPS 基

SDK 概要 使用 Maven 的用户可以从 Maven 库中搜索 odps-sdk 获取不同版本的 Java SDK: 包名 odps-sdk-core odps-sdk-commons odps-sdk-udf odps-sdk-mapred odps-sdk-graph 描述 ODPS 基 开放数据处理服务 ODPS SDK SDK 概要 使用 Maven 的用户可以从 Maven 库中搜索 "odps-sdk" 获取不同版本的 Java SDK: 包名 odps-sdk-core odps-sdk-commons odps-sdk-udf odps-sdk-mapred odps-sdk-graph 描述 ODPS 基础功能的主体接口, 搜索关键词 "odpssdk-core" 一些

More information

OOP with Java 通知 Project 3: 4 月 19 日晚 9 点

OOP with Java 通知 Project 3: 4 月 19 日晚 9 点 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 3: 4 月 19 日晚 9 点 复习 Upcasting 同一基类的不同子类可以被视为同一类型 ( 基类 ) 放宽类型一致性 简化接口 class A{ class B{ A a = new A(); B b = new B(); // A a = new B(); compile

More information

OOP with Java 通知 Project 2 提交时间 : 3 月 14 日晚 9 点 另一名助教 : 王桢 学习使用文本编辑器 学习使用 cmd: Power shell 阅读参考资料

OOP with Java 通知 Project 2 提交时间 : 3 月 14 日晚 9 点 另一名助教 : 王桢   学习使用文本编辑器 学习使用 cmd: Power shell 阅读参考资料 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 2 提交时间 : 3 月 14 日晚 9 点 另一名助教 : 王桢 Email: 51141201063@ecnu.cn 学习使用文本编辑器 学习使用 cmd: Power shell 阅读参考资料 OOP with Java Java 类型 引用 不可变类型 对象存储位置 作用域 OOP

More information

KillTest 质量更高 服务更好 学习资料 半年免费更新服务

KillTest 质量更高 服务更好 学习资料   半年免费更新服务 KillTest 质量更高 服务更好 学习资料 http://www.killtest.cn 半年免费更新服务 Exam : 310-065Big5 Title : Sun Certified Programmer for the Java 2 Platform, SE 6.0 Version : Demo 1 / 14 1. 35. String #name = "Jane Doe"; 36. int

More information

Microsoft PowerPoint - 6. 用户定义类型User-defined Datatypes.ppt [兼容模式]

Microsoft PowerPoint - 6. 用户定义类型User-defined Datatypes.ppt [兼容模式] 用户定义类型 User-defined Datatypes classes and structs 几何向量 (Geometry Vector) 二维平面上的向量由起点和终点构成 每个点包含两个坐标 (x, y), 因此一个向量需要四个实数表示 Start= (0.9,1.5) Start= (0.4,0.8) int main() { double xstart = 0.4; double xend

More information

詞 彙 表 編 號 詞 彙 描 述 1 預 約 人 資 料 中 文 姓 名 英 文 姓 名 身 份 證 字 號 預 約 人 電 話 性 別 2 付 款 資 料 信 用 卡 別 信 用 卡 號 信 用 卡 有 效 日 期 3 住 房 條 件 入 住 日 期 退 房 日 期 人 數 房 間 數 量 入

詞 彙 表 編 號 詞 彙 描 述 1 預 約 人 資 料 中 文 姓 名 英 文 姓 名 身 份 證 字 號 預 約 人 電 話 性 別 2 付 款 資 料 信 用 卡 別 信 用 卡 號 信 用 卡 有 效 日 期 3 住 房 條 件 入 住 日 期 退 房 日 期 人 數 房 間 數 量 入 100 年 特 種 考 試 地 方 政 府 公 務 人 員 考 試 試 題 等 別 : 三 等 考 試 類 科 : 資 訊 處 理 科 目 : 系 統 分 析 與 設 計 一 請 參 考 下 列 旅 館 管 理 系 統 的 使 用 案 例 圖 (Use Case Diagram) 撰 寫 預 約 房 間 的 使 用 案 例 規 格 書 (Use Case Specification), 繪 出 入

More information

OOP with Java 通知 Project 4: 4 月 19 日晚 9 点

OOP with Java 通知 Project 4: 4 月 19 日晚 9 点 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 4: 4 月 19 日晚 9 点 复习 Protected 可以被子类 / 同一包中的类访问, 不能被其他类访问 弱化的 private 同时赋予 package access class MyType { public int i; public double d; public char

More information

Microsoft Word - 第3章.doc

Microsoft Word - 第3章.doc 第 3 章 lambda 表达式及其应用 lambda 表达式是 Java 8 提供的一种新特性, 它使得 Java 也能像 C# 和 C++ 语言一样进行简单的 函数式编程, 这不仅简化了某些通用结构的实现方式, 也大大增强了 Java 语言的表达功能 3.1 lambda 表达式简介 lambda 表达式是基于数学中的 λ 演算得名, 本质上就是一个没有方法名的匿名方法 例如, 有一个方法定义如下

More information

OOP with Java 通知 Project 4: 5 月 2 日晚 9 点

OOP with Java 通知 Project 4: 5 月 2 日晚 9 点 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 4: 5 月 2 日晚 9 点 复习 Protected 可以被子类 / 同一包中的类访问, 不能被其他类访问 弱化的 private 同时赋予 package access class MyType { public int i; public double d; public char

More information

Microsoft Word - JCS5.doc

Microsoft Word - JCS5.doc 第 5 章进一步讨论对象和类 5.1 抽象数据类型 5.1.1 概述 绝大多数程序设计语言都预定义了一些基本数据类型, 并相应定义了对那些类型的实例执行的操作 比如, 对整型 实型等数值类型, 有加 减 乘 除等操作 ; 对逻辑类型, 有逻辑与 逻辑或 逻辑非等操作 对于用户自定义的复合数据类型, 需要由程序员自己定义一些方法, 对该类型的实例进行所需的操作 在早期许多程序设计语言中, 复合数据类型及其相关操作的代码之间没有特殊的联系

More information

Microsoft PowerPoint - 07 派生数据类型

Microsoft PowerPoint - 07 派生数据类型 能源与动力工程学院 目录 派生类型 陈 斌 固有数据类型 数值型 (numerical) 整型 INTEGER 实型 REAL 复数型 COMPLEX 非数值型 字符型 CHARACTER 逻辑型 ( 布尔型 )LOGICAL 自定义数据类型 ( 派生类型, derived type) 派生类型是指用户利用 Fortran 系统内部类型, 如整型 实型 复数型 逻辑型 字符型等的组合自行创建出一个新的数据类型,

More information

教案模板4-2

教案模板4-2 传智播客 Java 基础入门 教学设计 课程名称 : Java 基础入门 授课年级 : 2014 年级 授课学期 : 2014 学年第一学期 教师姓名 : 某某老师 2014 年 02 月 09 日 课题名称第 3 章面向对象上 计划学时 6 课时 Java 是一种面向对象的语言, 认识面向对象的编程思想对于 Java 学习至关重 内容分析 要 在面向对象中, 有两个重要的概念, 分别是类和对象,

More information

Microsoft Word - 01.DOC

Microsoft Word - 01.DOC 第 1 章 JavaScript 简 介 JavaScript 是 NetScape 公 司 为 Navigator 浏 览 器 开 发 的, 是 写 在 HTML 文 件 中 的 一 种 脚 本 语 言, 能 实 现 网 页 内 容 的 交 互 显 示 当 用 户 在 客 户 端 显 示 该 网 页 时, 浏 览 器 就 会 执 行 JavaScript 程 序, 用 户 通 过 交 互 式 的

More information

KillTest 质量更高 服务更好 学习资料 半年免费更新服务

KillTest 质量更高 服务更好 学习资料   半年免费更新服务 KillTest 质量更高 服务更好 学习资料 http://www.killtest.cn 半年免费更新服务 Exam : 310-055Big5 Title : Sun Certified Programmer for the Java 2 Platform.SE 5.0 Version : Demo 1 / 22 1. 11. public static void parse(string str)

More information

FY.DOC

FY.DOC 高 职 高 专 21 世 纪 规 划 教 材 C++ 程 序 设 计 邓 振 杰 主 编 贾 振 华 孟 庆 敏 副 主 编 人 民 邮 电 出 版 社 内 容 提 要 本 书 系 统 地 介 绍 C++ 语 言 的 基 本 概 念 基 本 语 法 和 编 程 方 法, 深 入 浅 出 地 讲 述 C++ 语 言 面 向 对 象 的 重 要 特 征 : 类 和 对 象 抽 象 封 装 继 承 等 主

More information

Chapter 9: Objects and Classes

Chapter 9: Objects and Classes Fortran Algol Pascal Modula-2 BCPL C Simula SmallTalk C++ Ada Java C# C Fortran 5.1 message A B 5.2 1 class Vehicle subclass Car object mycar public class Vehicle extends Object{ public int WheelNum

More information

슬라이드 1

슬라이드 1 2018-2019 年度第二学期 00106501 计算机图形学 童伟华管理科研楼 1205 室 E-mail: tongwh@ustc.edu.cn 中国科学技术大学数学科学学院 http://math.ustc.edu.cn/ 附讲三 C/C++ 编程 ( 二 ) 2 C++ 特点 C++ 是面对对象 (object oriented) 编程语言 纯面向对象语言 : 指不管什么东西, 都应该存在于对象之中,

More information

姓名 : 年级专业 : 学号 : 凡年级专业 姓名 学号错写 漏写或字迹不清者, 成绩按零分记 密 封 线 java 较难 试卷 总分 题号 一 二 三 四 五 题分 得分 D 国际通信协议 4 下面选项中, 不是面向对象的特征的是 ( ) A 封装 B 继承 得分 一 单选题 ( 每题 3 分,

姓名 : 年级专业 : 学号 : 凡年级专业 姓名 学号错写 漏写或字迹不清者, 成绩按零分记 密 封 线 java 较难 试卷 总分 题号 一 二 三 四 五 题分 得分 D 国际通信协议 4 下面选项中, 不是面向对象的特征的是 ( ) A 封装 B 继承 得分 一 单选题 ( 每题 3 分, java 较难 试卷 总分 题号 一 二 三 四 五 题分 D 国际通信协议 4 下面选项中, 不是面向对象的特征的是 ( ) A 封装 B 继承 一 单选题 ( 每题 3 分, 共计 15 分 ) 1 下列修饰符中, 成员内部类被 ( ) 修饰后, 可以被外界访问 C 多态 D 重构 5 下列关于构造方法重载的说法中, 错误的是 () A 不同构造方法中调用本类其它的构造方法时, 需要使用 this([

More information

帝国CMS下在PHP文件中调用数据库类执行SQL语句实例

帝国CMS下在PHP文件中调用数据库类执行SQL语句实例 帝国 CMS 下在 PHP 文件中调用数据库类执行 SQL 语句实例 这篇文章主要介绍了帝国 CMS 下在 PHP 文件中调用数据库类执行 SQL 语句实例, 本文还详细介绍了帝国 CMS 数据库类中的一些常用方法, 需要的朋友可以参考下 例 1: 连接 MYSQL 数据库例子 (a.php)

More information

Microsoft Word - word模板-教师.doc

Microsoft Word - word模板-教师.doc 传智播客 Java 基础入门 教学设计 课程名称 : Java 基础入门 授课年级 : 2014 年级 授课学期 : 2014 学年第一学期 教师姓名 : 某某老师 2014 年 02 月 09 日 课题名称内容分析教学目标及基本要求重点及措施难点及措施 计划第 3 章面向对象上 6 课时学时 Java 是一种面向对象的语言, 认识面向对象的编程思想对于 Java 学习至关重要 在面向对象中, 有两个重要的概念,

More information

Microsoft Word - 第2章.doc

Microsoft Word - 第2章.doc 2 第第 2 章 学习第 1 章后, 读者已经对 Java 语言有了初步的了解, 本章将具体解析 Java 类的组成元素 任何一个 Java 类, 都有 5 种基本组成元素 : 属性 方法 构造方法 块和内部类 其中属性 方法 构造方法是使用最多的元素, 而块 内部类使用较少 本章将对各种元素进行学习 Java 类基本结构 2.1 类 类 Java 类的声明形式 访问权限修饰符 修饰符 class

More information

Microsoft Word - 第5章.doc

Microsoft Word - 第5章.doc 第 5 章 面向对象编程 除了基本的类和对象,Java 语言的面向对象编程还包括抽象类 接口 内部类及包等高级特性 通过对这些高级特性的支持,Java 语言全面实现了面向对象的编程 本章将进一步深入介绍 Java 语言面向对象编程方面的知识 5.1 类的三大特性 第 4 章介绍了有关类定义的基本知识 面向对象中的类还具有封装 继承与多态的特性, 这也是面向对象编程所具有的重要特点 Java 语言对类的封装

More information

Microsoft PowerPoint - 8. 运算符重载 Operator Overloading.pptx

Microsoft PowerPoint - 8. 运算符重载 Operator Overloading.pptx 运算符重载 Operator Overloading class Point { public: ; double x_, y_; Why Operator Overloading? Point (double x =0, double y = 0):x_(x),y_(y) { int main(){ Point a(1., 2), b(3,4); Point c = a + b; return 0;

More information

untitled

untitled 1 Outline 數 料 數 數 列 亂數 練 數 數 數 來 數 數 來 數 料 利 料 來 數 A-Z a-z _ () 不 數 0-9 數 不 數 SCHOOL School school 數 讀 school_name schoolname 易 不 C# my name 7_eleven B&Q new C# (1) public protected private params override

More information

Microsoft Word - ch04三校.doc

Microsoft Word - ch04三校.doc 4-1 4-1-1 (Object) (State) (Behavior) ( ) ( ) ( method) ( properties) ( functions) 4-2 4-1-2 (Message) ( ) ( ) ( ) A B A ( ) ( ) ( YourCar) ( changegear) ( lowergear) 4-1-3 (Class) (Blueprint) 4-3 changegear

More information

extend

extend (object oriented) Encapsulation Inheritance Polymorphism Dynamic Binding (base class) (derived class) 1 class Base { int I; void X(); void Y(); class Derived: public Base { private: int j; void z(); Derived

More information

Guava学习之Resources

Guava学习之Resources Resources 提供提供操作 classpath 路径下所有资源的方法 除非另有说明, 否则类中所有方法的参数都不能为 null 虽然有些方法的参数是 URL 类型的, 但是这些方法实现通常不是以 HTTP 完成的 ; 同时这些资源也非 classpath 路径下的 下面两个函数都是根据资源的名称得到其绝对路径, 从函数里面可以看出,Resources 类中的 getresource 函数都是基于

More information

Microsoft PowerPoint - 04-Inheritance.ppt

Microsoft PowerPoint - 04-Inheritance.ppt 继承 派生与多态性 1 本章主要内容 类的继承与派生 类成员的访问控制 简单继承与多重继承 派生类的构造 析构函数 多态性 2 1 类的继承与派生 保持已有类的特性, 并在其基础上产生新的类, 称新类继承了已有类的特征, 或称已有类派生出新类 被继承的已有类称为基类 ( 或父类 ) 派生出的新类称为派生类 派生类将自动继承基类的所有特性 ( 属性和方法 ) 派生类可以定义新的特性 ( 属性和方法 )

More information

C++ 程序设计 告别 OJ2 - 参考答案 MASTER 2019 年 5 月 3 日 1

C++ 程序设计 告别 OJ2 - 参考答案 MASTER 2019 年 5 月 3 日 1 C++ 程序设计 告别 OJ2 - 参考答案 MASTER 2019 年 5 月 3 日 1 1 TEMPLATE 1 Template 描述 使用模板函数求最大值 使用如下 main 函数对程序进行测试 int main() { double a, b; cin >> a >> b; cout c >> d; cout

More information

untitled

untitled 1 7 7.1 7.2 7.3 7.4 7.5 2 7.1 VFT virtual 7.1 3 1 1. 2. public protected public 3. VFT 4. this const volatile 4 2 5. ( ) ( ) 7.1 6. no-static virtual 7.2 7. inline 7.3 5 3 8. this this 9. ( ) ( ) delete

More information

OOP with Java 通知 : Project 2 提交时间 : 3 月 14 日晚 9 点 另一名助教 : 王桢

OOP with Java 通知 : Project 2 提交时间 : 3 月 14 日晚 9 点 另一名助教 : 王桢 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 : Project 2 提交时间 : 3 月 14 日晚 9 点 另一名助教 : 王桢 Email: 51141201063@ecnu.cn 复习 : Java 类型 基本类型 boolean, char, 封装 (wrappers) 类 (class) 定义 class MyType { int i;

More information

OOP with Java 通知 : Project 2 提交时间 : 3 月 15 日晚 9 点

OOP with Java 通知 : Project 2 提交时间 : 3 月 15 日晚 9 点 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 : Project 2 提交时间 : 3 月 15 日晚 9 点 复习 : Java 类型 基本类型 boolean, char, 封装 (wrappers) 类 (class) 定义 class MyType { int i; double d; 数据 (Fields) char c; void set(double

More information

EJB-Programming-4-cn.doc

EJB-Programming-4-cn.doc EJB (4) : (Entity Bean Value Object ) JBuilder EJB 2.x CMP EJB Relationships JBuilder EJB Test Client EJB EJB Seminar CMP Entity Beans Session Bean J2EE Session Façade Design Pattern Session Bean Session

More information

本章学习目标 小风 Java 实战系列教程 SpringMVC 简介 SpringMVC 的入门案例 SpringMVC 流程分析 配置注解映射器和适配器 注解的使用 使用不同方式的跳转页面 1. SpringMVC 简介 Spring web mvc

本章学习目标 小风 Java 实战系列教程 SpringMVC 简介 SpringMVC 的入门案例 SpringMVC 流程分析 配置注解映射器和适配器 注解的使用 使用不同方式的跳转页面 1. SpringMVC 简介 Spring web mvc 本章学习目标 SpringMVC 简介 SpringMVC 的入门案例 SpringMVC 流程分析 配置注解映射器和适配器 配置视图解析器 @RequestMapping 注解的使用 使用不同方式的跳转页面 1. SpringMVC 简介 Spring web mvc 和 Struts2 都属于表现层的框架, 它是 Spring 框架的一部分, 我们可 以从 Spring 的整体结构中看得出来 :

More information

博学谷 让 IT 教学更简单, 让 IT 学习更有效 第五章补充案例 案例 5-1 声明类 一 案例描述 1 考核知识点类的声明 2 练习目标 掌握声明一个类的语法格式 掌握如何在类中声明成员变量和成员方法 3 需求分析在程序中, 设计一个表示学生的类, 该类具有以下属性和方法 : 该类具有表示姓名

博学谷 让 IT 教学更简单, 让 IT 学习更有效 第五章补充案例 案例 5-1 声明类 一 案例描述 1 考核知识点类的声明 2 练习目标 掌握声明一个类的语法格式 掌握如何在类中声明成员变量和成员方法 3 需求分析在程序中, 设计一个表示学生的类, 该类具有以下属性和方法 : 该类具有表示姓名 第五章补充案例 案例 5-1 声明类 1 考核知识点类的声明 掌握声明一个类的语法格式 掌握如何在类中声明成员变量和成员方法 3 需求分析在程序中, 设计一个表示学生的类, 该类具有以下属性和方法 : 该类具有表示姓名的属性 该类具有表示性别的属性 该类具有表示说话行为的 sayhello() 方法, 并且用于输出学生的姓名 1) 使用 class 关键字定义一个表示学生类型的类, 类名为 Student

More information

第3 章 类 对象与方法 3.1 类 类的定义 在 Objective-C 中 每个类的定义包括两个部分 接口 interface 和实现 implementation 接口部 分定义在.h 文件中 包含类的声明 属性以及方法 主要作用是对外提供访问接口 实现部分定义在.m 文件中 主要

第3 章 类 对象与方法 3.1 类 类的定义 在 Objective-C 中 每个类的定义包括两个部分 接口 interface 和实现 implementation 接口部 分定义在.h 文件中 包含类的声明 属性以及方法 主要作用是对外提供访问接口 实现部分定义在.m 文件中 主要 第3 章 类 对象与方法 3.1 类 3.1.1 类的定义 在 Objective-C 中 每个类的定义包括两个部分 接口 interface 和实现 implementation 接口部 分定义在.h 文件中 包含类的声明 属性以及方法 主要作用是对外提供访问接口 实现部分定义在.m 文件中 主要用于方法的功能实现 这种定义类的方法 好处在于将公共声明 接口 与代码实现分开 对外屏蔽了功能实现的细节

More information

C++ 程序设计 告别 OJ1 - 参考答案 MASTER 2019 年 5 月 3 日 1

C++ 程序设计 告别 OJ1 - 参考答案 MASTER 2019 年 5 月 3 日 1 C++ 程序设计 告别 OJ1 - 参考答案 MASTER 2019 年 月 3 日 1 1 INPUTOUTPUT 1 InputOutput 题目描述 用 cin 输入你的姓名 ( 没有空格 ) 和年龄 ( 整数 ), 并用 cout 输出 输入输出符合以下范例 输入 master 999 输出 I am master, 999 years old. 注意 "," 后面有一个空格,"." 结束,

More information

Guava学习之CharSequenceReader

Guava学习之CharSequenceReader CharSequenceReader 类是以 CharSequence 的形式读取字符 CharSequenceReader 类继承自 Reader 类, 除了 remaining() hasremaining() 以及 checkopen() 函数之后, 其他的函数都是重写 Reader 类中的函数 CharSequenceReader 类声明没有用 public 关键字, 所以我们暂时还不能调用这个类

More information

javaexample-02.pdf

javaexample-02.pdf n e w. s t a t i c s t a t i c 3 1 3 2 p u b l i c p r i v a t e p r o t e c t e d j a v a. l a n g. O b j e c t O b j e c t Rect R e c t x 1 y 1 x 2 y 2 R e c t t o S t r i n g ( ) j a v a. l a n g. O

More information

chp4

chp4 Java 软件开发基础 4. 面向对象的程序设计基础 4.1 面向对象基础 对象 现实世界中复杂的对象是由许多小的 简单的对象组成的 客观存在的物体就是最基本的对象 不同的物体有共性, 共性存在于个性之中, 物体的个性又继承了共性 对象的状态属性 对象蕴含着许多信息, 可以用一组状态来表征 对象的行为操作 对象内部含有对数据的操作, 即对象的行为操作 某类事物的抽象 某类对象是对现实世界具有共同特性的某类事物的抽象

More information

Chapter 9: Objects and Classes

Chapter 9: Objects and Classes Java application Java main applet Web applet Runnable Thread CPU Thread 1 Thread 2 Thread 3 CUP Thread 1 Thread 2 Thread 3 ,,. (new) Thread (runnable) start( ) CPU (running) run ( ) blocked CPU sleep(

More information

untitled

untitled 1 Outline 類别 欄 (1) 類 類 狀 更 易 類 理 若 類 利 來 利 using 來 namespace 類 ; (2) namespace IBM class Notebook namespace Compaq class Notebook 類别 類 來 類 列 欄 (field) (property) (method) (event) 類 例 立 來 車 類 類 立 車 欄 料

More information

(TestFailure) JUnit Framework AssertionFailedError JUnit Composite TestSuite Test TestSuite run() run() JUnit

(TestFailure) JUnit Framework AssertionFailedError JUnit Composite TestSuite Test TestSuite run() run() JUnit Tomcat Web JUnit Cactus JUnit Java Cactus JUnit 26.1 JUnit Java JUnit JUnit Java JSP Servlet JUnit Java Erich Gamma Kent Beck xunit JUnit boolean JUnit Java JUnit Java JUnit Java 26.1.1 JUnit JUnit How

More information

OOP with Java 通知 Project 2 提交时间 : 3 月 21 日晚 9 点 作业提交格式 学习使用 文本编辑器 cmd, PowerShell (Windows), terminal(linux, Mac)

OOP with Java 通知 Project 2 提交时间 : 3 月 21 日晚 9 点 作业提交格式 学习使用 文本编辑器 cmd, PowerShell (Windows), terminal(linux, Mac) OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 2 提交时间 : 3 月 21 日晚 9 点 作业提交格式 学习使用 文本编辑器 cmd, PowerShell (Windows), terminal(linux, Mac) 复习 面向对象编程 将实际问题分解成不同的对象 不的对象提供不同的服务 对象之间可以传递消息 例子小李深夜

More information

内 容 简 介 本 书 是 一 本 关 于 语 言 程 序 设 计 的 教 材, 涵 盖 了 语 言 的 基 本 语 法 和 编 程 技 术, 其 中 包 含 了 作 者 对 语 言 多 年 开 发 经 验 的 总 结, 目 的 是 让 初 学 的 读 者 感 受 到 语 言 的 魅 力, 并 掌

内 容 简 介 本 书 是 一 本 关 于 语 言 程 序 设 计 的 教 材, 涵 盖 了 语 言 的 基 本 语 法 和 编 程 技 术, 其 中 包 含 了 作 者 对 语 言 多 年 开 发 经 验 的 总 结, 目 的 是 让 初 学 的 读 者 感 受 到 语 言 的 魅 力, 并 掌 语 言 程 序 设 计 郑 莉 胡 家 威 编 著 清 华 大 学 逸 夫 图 书 馆 北 京 内 容 简 介 本 书 是 一 本 关 于 语 言 程 序 设 计 的 教 材, 涵 盖 了 语 言 的 基 本 语 法 和 编 程 技 术, 其 中 包 含 了 作 者 对 语 言 多 年 开 发 经 验 的 总 结, 目 的 是 让 初 学 的 读 者 感 受 到 语 言 的 魅 力, 并 掌 握 语

More information

C++ 程序设计 OJ1 - 参考答案 MASTER 2019 年 5 月 3 日 1

C++ 程序设计 OJ1 - 参考答案 MASTER 2019 年 5 月 3 日 1 C++ 程序设计 OJ1 - 参考答案 MASTER 2019 年 5 月 3 日 1 1 CIRCLE 1 Circle 描述 编写一个圆类 Circle, 实现半径的输入 面积的计算和输出 输入 圆的半径 (double 类型 ) 输出 圆的面积 ( 保留小数点后两位 ) 样例输入 3 样例输出 28.27 提示 圆周率的取值需要比较精确, 以保证计算结果的精度 #include

More information

第八章类和对象的扩展 实验目的 (1) 类的继承 a. 掌握父类及子类的关系及创建方法 b. 掌握上转型对象的使用方法 c. 掌握子类对象创建过程中与父类构造方法的关系, 及 super 关键字的用法 (2) 多态与接口 a. 掌握抽象类与抽象方法的概念 b. 掌握多态的实现原理及方法 c. 了解成

第八章类和对象的扩展 实验目的 (1) 类的继承 a. 掌握父类及子类的关系及创建方法 b. 掌握上转型对象的使用方法 c. 掌握子类对象创建过程中与父类构造方法的关系, 及 super 关键字的用法 (2) 多态与接口 a. 掌握抽象类与抽象方法的概念 b. 掌握多态的实现原理及方法 c. 了解成 第八章类和对象的扩展 实验目的 (1) 类的继承 a. 掌握父类及子类的关系及创建方法 b. 掌握上转型对象的使用方法 c. 掌握子类对象创建过程中与父类构造方法的关系, 及 super 关键字的用法 (2) 多态与接口 a. 掌握抽象类与抽象方法的概念 b. 掌握多态的实现原理及方法 c. 了解成员变量的隐藏 d. 掌握接口的设计方法 实验范例 例 1:( 继承 ) (1) 编写一个圆类 Circle,

More information

工程项目进度管理 西北工业大学管理学院 黄柯鑫博士 甘特图 A B C D E F G 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 甘特图的优点 : 直观明了 ( 图形化概要 ); 简单易懂 ( 易于理解 ); 应用广泛 ( 技术通用 ) 甘特图的缺点 : 不能清晰表示活动间的逻辑关系 WBS 责任分配矩阵 ( 负责〇审批

More information

运算符重载 为什么要 运算符重载 那些运算符可以重载, 哪些不可以 如何实现运算符重载 实现方式 : 成员函数与非成员函数 类型转换 怎样实现对象与基本数据类型数据的运算 2

运算符重载 为什么要 运算符重载 那些运算符可以重载, 哪些不可以 如何实现运算符重载 实现方式 : 成员函数与非成员函数 类型转换 怎样实现对象与基本数据类型数据的运算 2 第十一讲 运算符重载 与类型转换 运算符重载 为什么要 运算符重载 那些运算符可以重载, 哪些不可以 如何实现运算符重载 实现方式 : 成员函数与非成员函数 类型转换 怎样实现对象与基本数据类型数据的运算 2 为什么要运算符重载 预定义的运算符只针对基本数据类型, 若要对类的对象进行类似的运算, 需要重新定义运算符的功能 运算符重载实质就是函数重载 : 对已有的运算符赋予多重含义, 使得同一个运算符作用于不同类型的数据时导致不同的行为

More information

CHAPTER VC#

CHAPTER VC# 1. 2. 3. 4. CHAPTER 2-1 2-2 2-3 2-4 VC# 2-5 2-6 2-7 2-8 Visual C# 2008 2-1 Visual C# 0~100 (-32768~+32767) 2 4 VC# (Overflow) 2-1 2-2 2-1 2-1.1 2-1 1 10 10!(1 10) 2-3 Visual C# 2008 10! 32767 short( )

More information

Microsoft Word - 第3章.doc

Microsoft Word - 第3章.doc Java C++ Pascal C# C# if if if for while do while foreach while do while C# 3.1.1 ; 3-1 ischeck Test() While ischeck while static bool ischeck = true; public static void Test() while (ischeck) ; ischeck

More information

《计算概论》课程 第十九讲 C 程序设计语言应用

《计算概论》课程 第十九讲  C 程序设计语言应用 Java 高级技术 课程第二讲 Java 语言的面向对象特性 (2) 李戈 北京大学信息科学技术学院软件研究所 2010 年 3 月 21 日 课程助教 : 前言 黎育龙 (10817195@pub.ss.pku.edu.cn) Email 标题 :Java 高级技术 + 题目 请不要把作业发到我的信箱 ; 新的课程网站 http://www.ontoedu.pku.edu.cn/index.jsp

More information

3.1 num = 3 ch = 'C' 2

3.1 num = 3 ch = 'C' 2 Java 1 3.1 num = 3 ch = 'C' 2 final 3.1 final : final final double PI=3.1415926; 3 3.2 4 int 3.2 (long int) (int) (short int) (byte) short sum; // sum 5 3.2 Java int long num=32967359818l; C:\java\app3_2.java:6:

More information

第三章面向对象基本特性 面向对象程序设计是一种先进的编程思想, 更加容易解决复杂的问题 面向对象系统最突出的特性是封装性 继承性和多态性 学习完本章节, 您能够 : 理解封装的概念 实现对象封装特性 实现继承特性 使用接口 掌握对象的多态性 任务 3.1 保护个人数据 情境描述 Tom

第三章面向对象基本特性 面向对象程序设计是一种先进的编程思想, 更加容易解决复杂的问题 面向对象系统最突出的特性是封装性 继承性和多态性 学习完本章节, 您能够 : 理解封装的概念 实现对象封装特性 实现继承特性 使用接口 掌握对象的多态性 任务 3.1 保护个人数据 情境描述 Tom 第三章面向对象基本特性 面向对象程序设计是一种先进的编程思想, 更加容易解决复杂的问题 面向对象系统最突出的特性是封装性 继承性和多态性 学习完本章节, 您能够 : 理解封装的概念 实现对象封装特性 实现继承特性 使用接口 掌握对象的多态性 任务 3.1 保护个人数据 3.1.1 情境描述 Tom 设计的 A 类员工类, 外部可以直接访问它的成员变量, 在现实社会中, 一个对象的 某些属性外界是不可以得知的,

More information

Mac Java import com.apple.mrj.*;... public class MyFirstApp extends JFrame implements ActionListener, MRJAboutHandler, MRJQuitHandler {... public MyFirstApp() {... MRJApplicationUtils.registerAboutHandler(this);

More information

chp5_1

chp5_1 Java 软件设计基础 5. 继承与多态 类的封装 类的特性 Java 程序设计的基本单位是类, 类是用来创建具体对象的模板, 有以下三个重要特性 : 封装 Java 语言中, 对象就是对一组变量和相关方法的封装 (Encapsulation), 通过对对象的封装, 实现模块化和信息隐藏 通过对类的成员辅以一定的访问限制, 实现类中成员的信息隐藏 继承 继承 (inheritance) 允许创建分等级层次的类,

More information

KillTest 质量更高 服务更好 学习资料 半年免费更新服务

KillTest 质量更高 服务更好 学习资料   半年免费更新服务 KillTest 质量更高 服务更好 学习资料 http://www.killtest.cn 半年免费更新服务 Exam : 70-536Chinese(C++) Title : TS:MS.NET Framework 2.0-Application Develop Foundation Version : DEMO 1 / 10 1. Exception A. Data B. Message C.

More information

Fun Time (1) What happens in memory? 1 i n t i ; 2 s h o r t j ; 3 double k ; 4 char c = a ; 5 i = 3; j = 2; 6 k = i j ; H.-T. Lin (NTU CSIE) Referenc

Fun Time (1) What happens in memory? 1 i n t i ; 2 s h o r t j ; 3 double k ; 4 char c = a ; 5 i = 3; j = 2; 6 k = i j ; H.-T. Lin (NTU CSIE) Referenc References (Section 5.2) Hsuan-Tien Lin Deptartment of CSIE, NTU OOP Class, March 15-16, 2010 H.-T. Lin (NTU CSIE) References OOP 03/15-16/2010 0 / 22 Fun Time (1) What happens in memory? 1 i n t i ; 2

More information

1intro.pptx

1intro.pptx 欢迎学习 大仕老师 1 第 1 章 JAVA 语言与面向对象的程序设计 1.1 Java 语言简介 1.2 面向对象程序设计 2 Java 语言简介 3 认识 Java Java 历史与发展 5 Java 是最热门的语言之一 数据来源 :IEEE Spectrum 6 6 0.1 Java 的发展历程 Internet 发展中的两次飞跃 : p www p Java Java 的出现 p 1990

More information

Microsoft Word - 物件導向編程精要.doc

Microsoft Word - 物件導向編程精要.doc Essential Object-Oriented Programming Josh Ko 2007.03.11 object-oriented programming C++ Java OO class object OOP Ruby duck typing complexity abstraction paradigm objects objects model object-oriented

More information

JavaIO.PDF

JavaIO.PDF O u t p u t S t ream j a v a. i o. O u t p u t S t r e a m w r i t e () f l u s h () c l o s e () public abstract void write(int b) throws IOException public void write(byte[] data) throws IOException

More information

使 用 Java 语 言 模 拟 保 险 箱 容 量 门 板 厚 度 箱 体 厚 度 属 性 锁 具 类 型 开 保 险 箱 关 保 险 箱 动 作 存 取 款

使 用 Java 语 言 模 拟 保 险 箱 容 量 门 板 厚 度 箱 体 厚 度 属 性 锁 具 类 型 开 保 险 箱 关 保 险 箱 动 作 存 取 款 JAVA 程 序 设 计 ( 肆 ) 徐 东 / 数 学 系 使 用 Java 语 言 模 拟 保 险 箱 容 量 门 板 厚 度 箱 体 厚 度 属 性 锁 具 类 型 开 保 险 箱 关 保 险 箱 动 作 存 取 款 使 用 Java class 代 表 保 险 箱 public class SaveBox 类 名 类 类 体 实 现 封 装 性 使 用 class SaveBox 代 表 保

More information

chp6.ppt

chp6.ppt Java 软 件 设 计 基 础 6. 异 常 处 理 编 程 时 会 遇 到 如 下 三 种 错 误 : 语 法 错 误 (syntax error) 没 有 遵 循 语 言 的 规 则, 出 现 语 法 格 式 上 的 错 误, 可 被 编 译 器 发 现 并 易 于 纠 正 ; 逻 辑 错 误 (logic error) 即 我 们 常 说 的 bug, 意 指 编 写 的 代 码 在 执 行

More information

EJB-Programming-3.PDF

EJB-Programming-3.PDF :, JBuilder EJB 2.x CMP EJB Relationships JBuilder EJB Test Client EJB EJB Seminar CMP Entity Beans Value Object Design Pattern J2EE Design Patterns Value Object Value Object Factory J2EE EJB Test Client

More information

《计算概论》课程 第十九讲 C 程序设计语言应用

《计算概论》课程 第十九讲  C 程序设计语言应用 Java 高级技术 课程第二讲 Java 语言的面向对象特性 (3) 李戈 北京大学信息科学技术学院软件研究所 2010 年 3 月 21 日 进入一个新的主题 抽象类 vs. 接口 抽象类的引出 抽象类 现实世界中一些没有具体对象的纯粹抽象概念, 例如, 鸟 鱼 灯 树 动物 ; 抽象类用于建模现实世界中的纯粹抽象概念 ; 定义方法 : 使用保留字 abstract public abstract

More information

untitled

untitled How to using M-Power Report API M-Power Report API 力 了 M-Power Report -- Java (Library) M-Power Report API 行 Java M-Power Report M-Power Report API ( 30 ) PDF/HTML/CSV/XLS JPEG/PNG/SVG 料 料 OutputStream

More information

1 1 大概思路 创建 WebAPI 创建 CrossMainController 并编写 Nuget 安装 microsoft.aspnet.webapi.cors 跨域设置路由 编写 Jquery EasyUI 界面 运行效果 2 创建 WebAPI 创建 WebAPI, 新建 -> 项目 ->

1 1 大概思路 创建 WebAPI 创建 CrossMainController 并编写 Nuget 安装 microsoft.aspnet.webapi.cors 跨域设置路由 编写 Jquery EasyUI 界面 运行效果 2 创建 WebAPI 创建 WebAPI, 新建 -> 项目 -> 目录 1 大概思路... 1 2 创建 WebAPI... 1 3 创建 CrossMainController 并编写... 1 4 Nuget 安装 microsoft.aspnet.webapi.cors... 4 5 跨域设置路由... 4 6 编写 Jquery EasyUI 界面... 5 7 运行效果... 7 8 总结... 7 1 1 大概思路 创建 WebAPI 创建 CrossMainController

More information

工程合同管理 一 民事法律关系概述 1-1 主体 拥有权利承担义务的当事人 法律关系三要素 客体 当事人权利义务所指的对象 内容 具体的权利和义务的内容 图 1-1 法律关系的构成要素

工程合同管理 一 民事法律关系概述 1-1 主体 拥有权利承担义务的当事人 法律关系三要素 客体 当事人权利义务所指的对象 内容 具体的权利和义务的内容 图 1-1 法律关系的构成要素 学习目标 1. 2. 3. 4. 5. 导言 第一节民事法律关系 工程合同管理 一 民事法律关系概述 1-1 主体 拥有权利承担义务的当事人 法律关系三要素 客体 当事人权利义务所指的对象 内容 具体的权利和义务的内容 图 1-1 法律关系的构成要素 1. 2. 2 3. 1 2 3 4 3 工程合同管理 1-1 A. B. C. D. C C C A B D 二 民事法律行为的构成要件 1. 1-1

More information

《大话设计模式》第一章

《大话设计模式》第一章 第 1 章 代 码 无 错 就 是 优? 简 单 工 厂 模 式 1.1 面 试 受 挫 小 菜 今 年 计 算 机 专 业 大 四 了, 学 了 不 少 软 件 开 发 方 面 的 东 西, 也 学 着 编 了 些 小 程 序, 踌 躇 满 志, 一 心 要 找 一 个 好 单 位 当 投 递 了 无 数 份 简 历 后, 终 于 收 到 了 一 个 单 位 的 面 试 通 知, 小 菜 欣 喜

More information

NOWOER.OM m/n m/=n m/n m%=n m%n m%=n m%n m/=n 4. enum string x1, x2, x3=10, x4, x5, x; 函数外部问 x 等于什么? 随机值 5. unsigned char *p1; unsigned long *p

NOWOER.OM m/n m/=n m/n m%=n m%n m%=n m%n m/=n 4. enum string x1, x2, x3=10, x4, x5, x; 函数外部问 x 等于什么? 随机值 5. unsigned char *p1; unsigned long *p NOWOER.OM /++ 程师能 评估. 单项选择题 1. 下 描述正确的是 int *p1 = new int[10]; int *p2 = new int[10](); p1 和 p2 申请的空间 的值都是随机值 p1 和 p2 申请的空间 的值都已经初始化 p1 申请的空间 的值是随机值,p2 申请的空间 的值已经初始化 p1 申请的空间 的值已经初始化,p2 申请的空间 的值是随机值 2.

More information

untitled

untitled 3 C++ 3.1 3.2 3.3 3.4 new delete 3.5 this 3.6 3.7 3.1 3.1 class struct union struct union C class C++ C++ 3.1 3.1 #include struct STRING { typedef char *CHARPTR; // CHARPTR s; // int strlen(

More information

untitled

untitled (encapsulation) 例 類 說 類 料 來 料 information hiding 念 (inheritance) 來說 類 類 類 類 類 類 行 利 來 (polymorphism) 不 類 數 不 1 2 3 4 類 類 不 類 不 類 5 6 7 // virtual 不見了 #include #include using namespace

More information

Java Access 5-1 Server Client Client Server Server Client 5-2 DataInputStream Class java.io.datainptstream (extends) FilterInputStream InputStream Obj

Java Access 5-1 Server Client Client Server Server Client 5-2 DataInputStream Class java.io.datainptstream (extends) FilterInputStream InputStream Obj Message Transition 5-1 5-2 DataInputStream Class 5-3 DataOutputStream Class 5-4 PrintStream Class 5-5 (Message Transition) (Exercises) Java Access 5-1 Server Client Client Server Server Client 5-2 DataInputStream

More information

Java java.lang.math Java Java.util.Random : ArithmeticException int zero = 0; try { int i= 72 / zero ; }catch (ArithmeticException e ) { // } 0,

Java java.lang.math Java Java.util.Random : ArithmeticException int zero = 0; try { int i= 72 / zero ; }catch (ArithmeticException e ) { // } 0, http://debut.cis.nctu.edu.tw/~chi Java java.lang.math Java Java.util.Random : ArithmeticException int zero = 0; try { int i= 72 / zero ; }catch (ArithmeticException e ) { // } 0, : POSITIVE_INFINITY NEGATIVE_INFINITY

More information

Microsoft Word - 第5章.doc

Microsoft Word - 第5章.doc 第 5 课 深入面向对象编程 在面向对象的概念中, 大家可以知道所有的对象都是通过类来描绘的, 但是反过来却不是这样, 并不是所有的类都是用来描绘对象的 如果一个类中没有包含足够的信息来描绘一个具体的对象, 那么这样的类就是抽象类 由于 Java 语言只支持单继承, 那么接口的存在就弥补了单继承的不足 内部类也是嵌套的类, 方法的重载和重写是 Java 语言多态性的不同表现 本课将深入讲解面向对象编程中的这些类和方法的使用以及包的概念

More information

1 4 1.1 4 1.2..4 2..4 2.1..4 3.4 3.1 Java.5 3.1.1..5 3.1.2 5 3.1.3 6 4.6 4.1 6 4.2.6 5 7 5.1..8 5.1.1 8 5.1.2..8 5.1.3..8 5.1.4..9 5.2..9 6.10 6.1.10

1 4 1.1 4 1.2..4 2..4 2.1..4 3.4 3.1 Java.5 3.1.1..5 3.1.2 5 3.1.3 6 4.6 4.1 6 4.2.6 5 7 5.1..8 5.1.1 8 5.1.2..8 5.1.3..8 5.1.4..9 5.2..9 6.10 6.1.10 Java V1.0.1 2007 4 10 1 4 1.1 4 1.2..4 2..4 2.1..4 3.4 3.1 Java.5 3.1.1..5 3.1.2 5 3.1.3 6 4.6 4.1 6 4.2.6 5 7 5.1..8 5.1.1 8 5.1.2..8 5.1.3..8 5.1.4..9 5.2..9 6.10 6.1.10 6.2.10 6.3..10 6.4 11 7.12 7.1

More information

Microsoft PowerPoint - 7. 面向对象程序设计-Object-Oriented Programming.ppt [兼容模式]

Microsoft PowerPoint - 7. 面向对象程序设计-Object-Oriented Programming.ppt [兼容模式] 面向对象程序设计 Object-Oriented Programming(OOP) Classes,Inheritance, Polymorphism A Survey of Programming Techniques Unstructured programming, procedural programming, modular programming and object-oriented

More information

(procedure-oriented)?? 2

(procedure-oriented)?? 2 1 (procedure-oriented)?? 2 (Objected-Oriented) (class)? (method)? 3 : ( 4 ???? 5 OO 1966 Kisten Nygaard Ole-Johan Dahl Simula Simula 爲 6 Smalltalk Alan Kay 1972 PARC Smalltalk Smalltalk 爲 Smalltalk 爲 Smalltalk

More information

(1)Java 语言主要知识点 :Java 语言的特点 ;Java 平台的体系结构 (2)Java 运行环境与开发环境主要知识点 :Java 运行环境 ;Java 开发环境 (3) 应用程序举例主要知识点 : 编写一个 Java Application;Java 程序基本代码结构 第二章 Java

(1)Java 语言主要知识点 :Java 语言的特点 ;Java 平台的体系结构 (2)Java 运行环境与开发环境主要知识点 :Java 运行环境 ;Java 开发环境 (3) 应用程序举例主要知识点 : 编写一个 Java Application;Java 程序基本代码结构 第二章 Java 面向对象程序设计 教学大纲 课程编码 :112722 课程名称 : 面向对象程序设计学时 / 学分 :54/3 先修课程 : C 语言程序设计 算法与数据结构 适用专业 : 信息与计算科学开课教研室 : 信息与计算科学教研室 一 课程性质与任务 1. 课程性质 : 本课程是信息与计算科学专业的专业选修课 2. 课程任务 : 本课程主要介绍面向对象程序设计的方法和 Java 语言的基本概念 以 Java

More information

Microsoft Word - 第3章.doc

Microsoft Word - 第3章.doc CHAPTER3 第 3 章 面向对象程序设计 Java 语言是一种面向对象的高级程序语言 应用面向对象语言求解问题的基本思路是 : 首先分析问题并建立相应的对象, 然后通过这些对象以及它们之间的配合解决问题, 其中每个对象在计算机中占用一定的内存, 同时能够完成一定的功能 这种基本思想实际上是模拟现实生活求解问题的一般过程 在现实生活中, 任何一个人或任何一种物体都可以被认为是对象 例如 : 人一般拥有手

More information

2009年3月全国计算机等级考试二级Java语言程序设计笔试试题

2009年3月全国计算机等级考试二级Java语言程序设计笔试试题 2009 年 3 月 全 国 计 算 机 等 级 考 试 笔 试 试 卷 二 级 Java 语 言 程 序 设 计 ( 考 试 时 间 90 分 钟, 满 分 100 分 ) 一 选 择 题 ( 每 题 2 分, 共 70 分 ) 下 列 各 题 A) B) C) D) 四 个 选 项 中, 只 有 一 个 选 项 是 正 确 的 请 将 正 确 选 项 填 涂 在 答 题 卡 相 应 位 置 上,

More information

res/layout 目录下的 main.xml 源码 : <?xml version="1.0" encoding="utf 8"?> <TabHost android:layout_height="fill_parent" xml

res/layout 目录下的 main.xml 源码 : <?xml version=1.0 encoding=utf 8?> <TabHost android:layout_height=fill_parent xml 拓展训练 1- 界面布局 1. 界面布局的重要性做应用程序, 界面是最基本的 Andorid 的界面, 需要写在 res/layout 的 xml 里面, 一般情况下一个 xml 对应一个界面 Android 界面布局有点像写 html( 连注释代码的方式都一样 ), 要先给 Android 定框架, 然后再在框架里面放控件,Android 提供了几种框架,AbsoluteLayout,LinearLayout,

More information

《Java高级技术》课程 第一讲 C 程序设计语言应用

《Java高级技术》课程 第一讲  C 程序设计语言应用 关于 Java 的参数传递请给出以下程序的输出结果 : public class ClassOne { public static void reverse(string str) { //String temp = ""; for (int index = str.length() 1; index >= 0; index--) { temp = temp + str.charat(index);

More information