chp4

Size: px
Start display at page:

Download "chp4"

Transcription

1 Java 软件开发基础 4. 面向对象的程序设计基础

2 4.1 面向对象基础 对象 现实世界中复杂的对象是由许多小的 简单的对象组成的 客观存在的物体就是最基本的对象 不同的物体有共性, 共性存在于个性之中, 物体的个性又继承了共性 对象的状态属性 对象蕴含着许多信息, 可以用一组状态来表征 对象的行为操作 对象内部含有对数据的操作, 即对象的行为操作 某类事物的抽象 某类对象是对现实世界具有共同特性的某类事物的抽象 对象间的关联和作用 面向对象技术正是利用对现实世界中对象的抽象和对象之间相互关联 相互作用的描述来对现实世界进行模拟, 并且使其映射到目标系统中, 对象之间存在相互关联和相互作用

3 面向对象软件的开发过程 面向对象的程序设计和问题求解力求符合人们日常自然的思维习惯, 降低 分解问题的难度和复杂性, 提高整个求解过程的可控制性 可监测性和可维护性, 从而达到以较小的代价和较高的效率获得较满意效果的目的 面向对象的分析 (OOA:Object Oriented Analysis) 明确用户需求, 并用标准化的面向对象的模型规范地表述这一需求, 最后将形成面向对象的分析模型, 即 OOA 模型 这一阶段应由用户和开发人员共同完成 面向对象的设计 (OOD:Object Oriented Design) 将对 OOA 模型加以扩展, 引入界面管理 任务管理和数据管理三部分内容, 得到 OOD 模型, 并对最初的 OOD 模型做进一步的细化分析 设计和验证 在明确各对象类的功能和组成时, 充分利用已存在的 可获得的对象类或组件

4 在较大型的开发项目中, 通常设置专人专门负责管理所有的可重用资源, 将这些资源组织成类库或其他的可重用结构 面向对象的实现 (OOP:Object Oriented Programming) 就是具体的程序编码阶段, 主要任务如下 : 选择一种合适的面向对象的编程语言 ; 用选定的语言编码实现详细设计过程 ; 用相关的公式 图表 说明和规则等对软件系统各对象与类进行详尽的描述 ; 将编写好的各个类代码块根据类的相互关系集成 ; 利用开发人员提供的测试样例和用户提供的测试样例分别检验代码完成的各个模块和整个软件系统 在面向对象的开发过程中, 测试工作可以随着整个实现阶段编码工作的深入而同步完成 编程阶段完成后进入运行阶段

5 4.2 类 类的概念 类是对某类对象的抽象描述, 将数据属性及其相关操作封装在一起的集合体, 它是对象的模板或蓝图 每一个对象都含有特征与行为, 将其中的共性进行抽象描述, 就形成了类 尺寸型号生产厂家用户 关闭 打开 调音 调频

6

7 类与对象的关系 类的定义格式 类声明 类体 类的修饰符 : 用来说明类的属性, 可分为访问控制符和非访问控制符两类 访问控制符 public: 表示该类可以被任何对象或类来调用或引用, 包括同一个包或不同包中的类访问 一个程序中只能有一个公共类

8 private: 表示只能被该类的方法访问和修改, 而不能被任何其他类 包括该类的子类来获取和引用, 这是系统默认的修饰符 非访问控制符 abstract: 抽象类 表示该类是无具体对象的抽象类, 这是一种特殊的类, 它不能实例化, 即不能用 new 关键字来生成该类的对象, 只能由其派生子类 其抽象方法的具体实现也由继承该抽象类的子类来完成 final: 表示该类为最终类, 不能再由它派生新的子类 注意 : 抽象类可以同常规类一样, 具有数据和方法, 包含抽象方法的类必须声明为抽象类 abstract 和 final 不能修饰同一个类 关键字 class extends: 指明该类的父类 ( 如果有的话 ) implements: 用来引出接口, 以供本类中使用, 接口可以有多个

9 类体 方法 用于完成变量 ( 属性 ) 的说明以及方法 ( 行为 ) 的定义与实现 围绕着类的属性进行各种操作 ; 与其他的类或对象进行数据交流 消息传递等操作 整个类的详细结构

10

11 4.3 成员变量 变量包括以下几种 成员变量 (Data field): 也称为字段, 定义在类中, 是类成员的一部分, 整个类都可以访问它 方法或者代码块中的变量 (local variable): 即局部变量 方法声明中的变量 (parameter): 也称为形式参数 成员变量的声明 零个或多个修饰符 字段类型 字段名称 修饰符 [ 修饰符 ] 类型成员变量名 ; 缺省访问修饰符 : 同 friendly 修饰符, 修饰的成员变量可以被同一包 (package) 中的任何类访问 ;

12 public: 修饰的成员变量称为公共变量, 可以被项目文件中的任何方法访问 由于 public 成员变量不受限制, 这易使类的对象引起不希望的修改, 破坏系统的封装性, 建议成员变量尽量不要使用 public 修饰符 ; protected: 修饰的成员变量称为保护变量, 可以被有继承关系的类自由访问, 即子类可以访问它 ; 也可以由同一个包中的其它类访问 private: 修饰的成员变量称为私有变量, 只能被定义它的类使用, 而不能被其他任何类使用 这种方式通常是最安全的, 在 Java 程序开发中通常使用该修饰符实现数据的封装 ; private protected: 私有保护访问控制符 只允许该类本身以及子类访问, 把同一个包中的其他类严格排除在外, 使得成员变量更专有于具有明确继承关系的类, 而不是松散组合在一起的包

13 成员变量修饰符访问权限 修饰符 public private protected 默认修饰符 private protected 类 P P P P P 同一个包 P O P P P 子类 其它包 同一个包 其它包 static: 修饰的成员变量又称为类变量, 不加 static 修饰的成员变量又叫对象变量 对象变量依附于具体的对象实例, 它的值因具体对象实例的不同而不同, 而类变量为该类的所有对象所共享, 它的值不因类的对象不同而不同 P O P O P P O P P O 其它类 P O O O O

14 用该修饰符修饰的成员变量不是被保存在由该类创建的某个具体对象的存储单元中, 而是被保存在该类内存区域的一个公共的存储单元中 静态变量在类被载入时创建, 只要类存在, 静态变量就可见, 该静态变量由该类所创建的所有对象共享 所有的操作都是针对该内存单元 访问方式如下 : 实例 :N 个人顺次等待电梯并使用的例程 类 WaitE 的属性 对象名. 成员变量名 电梯的位置 电梯运行速度 人所在的位置 人要去的目的地 类名. 成员变量名

15 属性 static int epoint=0; final int speed=10; int spoint; int dpoint; 类的方法 获得电梯位置 获得电梯速度 构造方法

16 打印等待时间 打印乘坐时间 对于某个具体等待电梯的人的操作 创建并初始化 ( 即此人在哪一楼层, 要去往哪一楼层 ) 打印等待时间 将电梯置位为该对象目前所在的楼层 打印乘坐时间 将电梯置位为该对象到达的楼层

17

18

19 final: 修饰的成员变量叫最终成员变量, 亦即常量 一开始创建该变量时将其设了一个初始值, 在以后程序的运行过程当中, 变量的值将一直保持这个值不变 Java 中的常量必须是类的成员 对于最终成员变量, 任何赋值都将导致编译错误 因为常量在声明以后就不能改变其值, 所以常量必须要初始化 无论是实例变量, 还是类变量, 都可以被说明成常量 final 修饰符和 static 修饰符并不冲突 常量例程 class EFinal{ public static void main(string args[]){ System.out.println(Tom.MIN); Tom tom=new Tom(); System.out.println(tom.MIN+tom.MAX); } } class Tom{ final int MAX=70; static final int MIN=30; }

20 4.4 方法 概述 方法是类的主要组成部分, 又称为成员方法, 用来规定类属性上的操作, 改变对象的属性与产生行为, 实现类的内部功能的机制, 接收来自其他对象的信息以及向其他对象发送消息 方法同时也是类与外界进行交互的重要窗口 通常一个类由一个主方法和若干个子方法构成 主方法调用其他方法, 其他方法间也可以互相调用, 同一个方法可以被一个或多个方法调用 方法实现子任务处理的原则和规律 : 算法中需要细化的步骤 重复的代码以及重载父类方法都可以定义成类的方法 ; 方法应界面清晰 大小适中 Java 应用程序中, 程序的执行从主方法即 main 方法开始, 调用其他方法后返回到 main 方法, 并在 main 方法中结束整个程序的运行

21 定义格式 方法头 方法体 修饰符 public: 公共方法, 可被所有类访问 ; private: 私有方法, 只能被定义它的类 方法访问 ; protected: 保护方法, 可以定义它的类及其子类 同一个包中的其它类访问, 该修饰符的目的就是为了使其他包中的子类可以访问父类中的成员变量和方法 ; abstract: 抽象方法, 仅有方法头而没有具体方法体的方法, 所有的抽象方法必须存在于抽象类中 ; final: 最终方法, 不能被覆盖或重载 ;

22 synchronized: 可完成同步监控代理, 被该修饰符修饰的方法, 一次只能被一个线程使用, 进而可以控制多个并发线程的访问 ; native: 集成其他语言的代码 static: 静态方法或类方法 属于整个类的方法, 可通过类名直接调用 ; 如何判断一个变量或方法定义为实例的还是静态的? 如果一个变量或方法依赖于类的具体实例, 就应该定义为实例变量或实例方法 ; 如果一个变量或方法不依赖于类的具体实例, 就应该定义为静态变量或静态方法 本应该声明为静态方法而声明为实例方法是常见的设计错误 变量 在方法体中定义的变量以及方法的参数称为局部变量, 方法的参数在整个方法内有效, 方法内定义的局部变量自它被定义的位置之后到方法体结束之间有效

23 参数列表 是方法的输入接口, 列出了一系列参数的形式, 包括个数 类型和名称, 这类参数只有在运行时才分配存储单元, 被称为 形式参数 对于方法定义中的每一个参数必须合法, 调用时必须由一个实参量与其对应, 参量的个数 类型必须与对应的形参的个数 类型完全一致 方法也可以没有参数 方法不能嵌套定义 返回值类型 可以是任意的 Java 类型, 甚至可以是定义此方法的类或者方法可实现接口, 如果方法没有返回值, 则用 void 表示 在区分多个同名方法时, 编辑器不会考虑返回值类型, 所以不能声明两个参数列表相同而返回值不同的同名方法 当方法使用一个类名作为返回值类型时, 返回对象的类型必须是返回类型指定的类或者它的子类

24 throws 异常列表 规定了在方法执行中可能导致的异常 方法体 方法体是实现这个方法的代码段 ; 当方法体是一个 ; 时表示无方法体, 该类没有实现 当且仅当方法的修饰符中有 abstract 或 native 时, 方法才无方法体 方法的分类 用户自定义的方法 标准方法 方法的调用 程序调用方法 : 需要程序书写专门的调用命令来调用的方法 ; 系统方法 : 运行过程中不需书写专门命令而由系统自动调用的方法

25 方法的调用格式 [ 对象引用名.] 方法 ([ 实际参数列表 ]) 实际参数列表是传递给方法的参数, 可以是常量 变量或表达式, 个数 类型 顺序应该与形式参数一一对应 ; 在类中调用类自身的方法可以直接使用该方法名称 ; 否则需要使用前缀 ; 调用方法的执行过程是 : 首先将实际参数传递给形式参数, 然后执行方法体, 执行结束后从调用方法语句的下一句继续执行

26 方法调用例程 public class ScircleArea { static double scircle(int r) { double ss; ss=3.14*r*r; return(ss); } static void Area(int a,int b) { int s; s=a*b; System.out.println(s); } public static void main(string args[]) { int x=5,y=4; double result=scircle(x); System.out.println(result); Area(x,y); System.out.println(scircle(y)); } } 例程输出结果 方法表达式调用 方法语句调用 输出语句调用

27

28

29 参数 参数传递 指在 Java 语言中调用一个带有形参的方法时, 完成所提供的实参与形参的传输结合的过程 形参是方法声明中的变量清单 ; 实参 (argument) 是调用方法时传递给方法的实际值 Java 不允许将方法传递给方法, 但是可以将对象传递给方法, 然后调用这个对象的方法 传递方式 传值 : 若方法参数为简单数据类型, 将实参的值传递给形参, 方法接受实参的值, 但是不能改变 ; 传引用 : 若方法参数是复合数据类型, 则将对象的引用传递给方法

30 参数传递例程 public class Swap { static void swapxy(int x,int y) { int temp; System.out.print( 交换前 : ); System.out.println( x= +x+,y= +y); temp=x;x=y;y=temp; Sytem.out.print( 交换后 ); System.out.println( x= +x+,y= +y); } public static void main(string args[]) { int u=30,v=50; System.out.print( 调用前 : ); System.out.println( u= +u+,v= +v); swapxy(u,v); System.out.print( 调用后 : ); System.out.println( u= +u+,v= +v); } } 例程输出结果 调用前 :u=30,v=50 交换前 :x=30,y=50 交换后 x=50,y=30 调用后 :u=30,v=50

31

32 参数名称 在参数的作用域内, 参数的名称必须唯一 参数名称可以和一个类的字段名称相同, 如果这样使用, 该参数被称为使这个字段遮蔽 (shadow) 遮蔽的字段会使代码难以阅读 在上述语句中,setOrigin 方法的两个参数将该类的同名字段遮蔽, 若在方法体内部使用简单名称 x 和 y, 则表示引用参数, 而不是引用该类的字段 如果要访问字段, 必须使用限定名称 按照惯例, 遮蔽只在设置特定字段的构造方法或者方法中使用

33 任意数量的实参 当不知道有多少个特定类型的实参要传递给方法时, 可以使用可变参数 (vararg) 方法体中的代码将把参数作为数组来处理 格式如下 [ 修饰符 ] 返回值类型方法名 ([ 形式参数列表,] 最后一个参数的类型 参数名称 ) 最常用到可变参数的地方是输出方法, 如 public PrintStream printf(string format, Object args)

34 特殊的方法调用 递归 递归是指用自身结构来描述自己 循环调用 例如 : 阶层 n! = n ( n 1)! n! = 1 Fibonacci 数列 n 2 n = 1 F( n) = F( n 1) + F( n 2) F(1) = F(2) = 1 递归方法有直接递归方法和间接递归方法 方法体中又调用自身称为直接递归方法 ; 方法体中调用的虽然不是自身, 但是它间接调用了自身, 称为间接递归方法 递归方法调用涉及两个概念 : 栈 : 数据依次入栈, 后进先出 递归方法调用数据的保留 : 每调用一次便分配一次局部变量, 待调用结束局部变量就释放 但从递归过程的执行可以看出, 上一次调用的执行尚未结束, 下一次调用就开始了 所以递归调用的数据保留采用栈来解决 n 3

35

36 1 fac(5)? 1 fac(5)? 2 fac(4)? 2 fac(4)? 3 fac(3)? 3 fac(3)? 4 fac(2)? 4 fac(2) 2 5 fac(1)? 由于 n 不等于 1, 所以连续执行 4 次 fac(n-1) 第四次 n=1, 所以 fac(1)=1, 退栈一次, 弹出栈顶数据 1 fac(5)? 5 fac(5) fac(4)? 3 fac(3) 6 再一次执行 fac(n)=n*fac(n- 1), 得到 fac(n)=6, 退栈 以后的步骤类似, 最后一次执行,n 为 5,fac(4)=24,fac(5)=120

37 4.5 对象与构造方法 对象的创建 一个类可以创建多个实例对象, 对象的生成包括声明 实例化和初始化 对象的生命周期为 : 创建使用销毁回收 语法格式 类名对象名 ; 对象名 =new 类名 ([ 参数列表 ]); new 后带小括号的类名称为构造方法 默认的 最简单的构造方法是不带参数的 执行操作 在指定类上创建了一个对象 ; 为该对象分配了引用内存空间 ; 类名对象名 =new 类名 ([ 参数列表 ]); 执行由指定类所定义的构造方法, 完成一系列初始化工作

38 注意 : 在初始化工作时如果没有给属性赋值, 虚拟机会自动给它们赋予相应数据类型默认的初值 构造方法 类创建对象时需要使用构造方法, 以便为类所创建的对象一个合理的初始状态 特点 名字必须与它所在类的名字完全相同, 并且不返回任何数据类型 ; Java 中每个类都有构造方法, 在 new 运算符完成操作前, 构造方法立刻自动调用, 用来完成初始化该类的对象 ; Java 允许一个类中有若干个构造方法, 但这些构造方法的参数必须不同

39 如果程序中没有显示的编写构造方法, 则 Java 将为该类创建一个默认的构造方法 重载经常用于构造方法, 构造方法也可以继承 注意 虽然编译器会自动为没有构造方法的所有类提供无参数的默认构造方法, 但是这个默认构造方法会调用该类的父类的无参数构造方法 此时, 如果父类没有无参数构造方法, 编译器就会指出问题 所以必须检查其父类是否具有无参数构造方法 当然, 如果该类没有为它显式的定义父类, 则它的隐式父类是 Object 类, 该类的确具有无参数构造方法 构造方法实例 : 矩形类的构造 属性 : 矩形长 矩形高 矩形中心所在坐标点

40 坐标点类 横坐标 纵坐标 构造方法 矩形类构造方法

41 类中定义的其他方法 关键字 this 在构造方法中,this 引用当前对象, 即被调用的构造方法所属的对象 通过使用 this 关键字, 可以在构造方法中引用当前对象的任何成员 对字段使用关键字 this 这种情况的最常见原因是构造方法的参数遮蔽了对象的成员字段

42 对构造方法本身使用 this 使用 this 关键字调用同一个类中的另一个构造方法, 称为显式构造方法调用 (explicit constructor invocation) 格式如下 : this( 参数列表 ); 编译器根据参数的数量和类型判断应该调用哪个构造方法 如果存在, 对另一个构造方法的调用必须是构造方法中的第一行

43 用四个 0 值调用四个参数的构造方法 用两个 0 值和 width height 值调用四个参数的构造方法

44 使用对象 引用成员变量 : 定义 创建及初始化一个对象以后, 就可以引用该对象的成员变量 类对象已经创建 对象名. 成员变量名 创建对象与引用成员变量同时进行 new 构造方法名 ([ 参数列表 ]). 成员变量名 注意, 用这种语句来获取成员变量的方法, 当执行完该语句之后, 程序再也不具有对创建出的该对象类的引用, 因为程序从未把该引用存储到任何位置 对象被解除引用, 并且其资源被 Java 虚拟机回收

45 引用成员方法 : 定义 创建及初始化一个对象以后, 就可以引用该对象的成员方法 类对象已经创建 对象名. 成员方法名 ([ 参数列表 ]) 创建对象与引用成员变量同时进行 new 构造方法名 ([ 参数列表 ]). 成员方法名 ([ 参数列表 ]) 常见的编程错误 : -- 带有 void 关键字的构造函数构造函数本身没有返回类型, 当为构造函数提供了 void 返回类型时, 它就不再是构造函数, 而仅仅是一个普通的实例方法, 该方法名字与构造函数相同 该错误并不会引起编译错误, 而当需要创建实例的时候就会找不到相应的构造方法

46

47 对象的清除 当不存在对一个对象的引用时, 该对象成为一个无用对象 Java 的运行环境周期性的检测某个实体是否已经不再被任何对象所引用, 如果存在, 则收集并释放它占有的内存空间 并非实例 类变量和方法的所有组合都被允许使用 实例方法可以直接访问实例变量和实例方法 实例方法可以直接访问类变量和类方法 类方法可以直接访问类变量和类方法 类方法不能直接访问实例变量和实例方法, 它们必须通过对象引用

48 4.6 复合数据类型数组 复合数据类型数组的定义和基本数据类型结构定义类似, 步骤如下 : 声明数组对象 类名数组名 []; 创建, 并初始化数组的长度 类名数组名 =new 类名 [ 数组的大小 ]; 初始化每个数组中的元素 ( 即对象 ) 数组名 [ 下标 ]=new 类名 ([ 参数列表 ]); 经过以上步骤才为每个数组元素分配了存储空间, 才可以引用复合数据类型数组中的元素

49 实例 : 为某个班级创建一个学生类, 并生成实例进行操作, 判断是否能获得奖学金 类的声明 分析学生类应该具有的属性 姓名 班级 平均分 家庭年收入

50 成员方法 获取姓名 获取班级 获取平均分 获取家庭年收入

51 构造方法 采用带有三个参数的构造方法, 为学生的三个属性进行初始化 通过复合数据类型数组在另一个类中生成 4 个学生对象

52 打印学生信息 判断是否有学生获得奖学金

53

54 修改器 : 用于修改对象内部状态的实例方法 ; 一般说来, 修改器都会修改对象中某个字段的值, 作为一种约定, 修改器方法的名称往往以 set 开头, 加上需要修改的字段名称 通常修改器方法的返回值为 void 类型, 而它的参数是对象的新状态或对现有状态的改变量 访问器 : 只访问对象的状态信息, 但不修改它们的实例方法 ; 访问器会返回对象中某个字段的值, 作为一种约定, 访问器方法的名称往往以 get 或 is 开头, 加上需要访问的字段名称 通常访问器方法没有参数, 但必须有返回值

55 面向对象程序设计方法的优点 * 面向对象方法的特性 抽象性 (Abstraction) 是具体事物一般化的过程, 即对具有特定属性的对象进行概括, 从中归纳出该类对象的共性, 并从通用性的角度描述共有的属性和行为特征 抽象使得系统能够抓住事物的实质特征, 因此具有普遍性, 可以使用在不同的问题中 抽象包括以下两方面内容 : 数据抽象 : 描述某类对象的共同属性 方法抽象 : 描述某类对象的行为特征 Java 中, 通过定义属性和行为来表述对象的特征和功能, 通过定义接口来描述它们的地位以及与其他对象的关系, 最终形成一个广泛联系的 可理解 可扩充 可维护 更接近于问题本来面目的动态对象模型系统

56 封装性 (Encapsulation) 利用抽象数据类型将数据和基于数据的操作封装在一起, 即把对象的属性和行为结合成一个独立的相同单位, 并尽可能隐蔽对象的内部细节 封装的特点是使某类能建立起严格的内部结构, 保护好内部数据, 减少外界的干扰, 以保证类自身的独立性, 可工作在不同的环境中 对象以外的部分不能随意存取对象的内部数据 ( 属性 ), 从而有效的避免了外部错误对它的错误影响, 使软件错误局部化, 进而大大减少查错和排错的难度 继承性 (Inheritance) 是面向对象程序设计中最具魅力的特色, 是软件复用的一种形式, 对降低软件的复杂性行之有效 使得程序结构清晰 降低编码和维护的工作量, 提高了系统效率 Java 中的所有类都是通过直接或间接的继承 java.lang.object 类得到

57 采用对象但没有继承性的语言是基于对象的语言, 不是面向对象的语言 新类由已经存在的类 ( 父类 ) 生成, 通过保留它们的属性和行为, 并且根据新类自身的特色和要求加以修改, 增加新的属性和行为 通过继承得到的类称为子类, 被继承的类称为父类 类继承就是子类继承父类的成员变量和方法, 作为自己的成员变量和方法, 就好像它们是在子类中直接声明的一样 当然, 子类能否继承父类的变量和方法还有一定的限制 子类从父类继承主要包括以下两方面 : 属性 方法 继承的分类 单继承 多继承 : 子类从一个以上的父类继承,Java 不支持多继承

58 多态性 (Polymorphism) 指程序中同名的不同方法共存的情况下,Java 根据调用方法时传送参数的多少及传送参数的类型来调用具体不同的方法, 即可采用同样的方法获得不同的行为特征 在运行时自动选择正确的方法进行调用称为动态绑定 (Dynamic Binding) 多态性可提高程序的抽象程度, 使得一个类在使用其他类的功能 操作时, 不必了解该类的内部细节, 只需明确它提供的外部接口 多态的两种情况 覆盖 (Override): 子类对继承自父类的方法重新定义 重载 (Overload): 在同一个类中定义多个同名的不同方法

59 面向对象程序设计方法的优点 可重用性 可扩展性 可管理性 可自律性 可分离性 接口和消息机制

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

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

软件工程文档编制

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

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

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

エスポラージュ株式会社 住所 : 東京都江東区大島 東急ドエルアルス大島 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

模板

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

More information

无类继承.key

无类继承.key 无类继承 JavaScript 面向对象的根基 周爱 民 / aimingoo [email protected] 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 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

Microsoft PowerPoint - 3. 函数Functionl.ppt [兼容模式]

Microsoft PowerPoint - 3. 函数Functionl.ppt [兼容模式] 函数 Function 如何重用代码 How to reuse code 3 4 = 3*3*3*3 3 4,6 5 : 拷贝 - 粘帖代码 (Copy-paste code) 3 4,6 5,12 10 : 拷贝 - 粘帖代码 (Copy-paste code) Bad! 使用函数 (with a function) 使用函数 (with a function) 使用函数 (with a function)

More information

chp5_1

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

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: [email protected] 学习使用文本编辑器 学习使用 cmd: Power shell 阅读参考资料 OOP with Java Java 类型 引用 不可变类型 对象存储位置 作用域 OOP

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

新・解きながら学ぶ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

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

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

More information

Guava学习之Resources

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

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 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: [email protected] 复习 : Java 类型 基本类型 boolean, char, 封装 (wrappers) 类 (class) 定义 class MyType { int i;

More information

Microsoft PowerPoint - 04-Inheritance.ppt

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

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

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

More information

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

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

More information

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

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

More information

<4D F736F F D204A617661B3CCD0F2C9E8BCC6D3EBCAB5BCF9BDCCB3CCA3A8B5DA32B0E6A3A920B5DA35D5C22E646F63>

<4D F736F F D204A617661B3CCD0F2C9E8BCC6D3EBCAB5BCF9BDCCB3CCA3A8B5DA32B0E6A3A920B5DA35D5C22E646F63> 第 5 章 类类和对象和对象 教学目标 : 掌握类的构造方法的定义 作用, 以及如何实现类的构造方法 掌握如何创建类对象 如何使用类对象 掌握静态成员和实例成员的使用方法, 以及二者之间的区别 掌握类成员的访问权限的设置方法以及使用原则 教学重点 : 本章首先要求读者掌握对象的定义和引用的方法, 在此基础上深入理解静态成员和实例成员的定义及其应用 方法重载及其作用, 类的封装和访问控制权限 5.1

More information

2. AOP 底层技术实现 小风 Java 实战系列教程 关键词 : 代理模式 代理模型分为两种 : 1) 接口代理 (JDK 动态代理 ) 2) 子类代理 (Cglib 子类代理 ) 需求 :CustomerService 业务类, 有 save,update 方法, 希望在 save,updat

2. AOP 底层技术实现 小风 Java 实战系列教程 关键词 : 代理模式 代理模型分为两种 : 1) 接口代理 (JDK 动态代理 ) 2) 子类代理 (Cglib 子类代理 ) 需求 :CustomerService 业务类, 有 save,update 方法, 希望在 save,updat 本章学习目标 小风 Java 实战系列教程 AOP 思想概述 AOP 底层技术实现 AOP 术语介绍 SpringAOP 的 XML 方式 HelloWorld SpringAOP 的 XML 方式配置细节 SpringAOP 的注解方式 SpringAOP 的零配置方式 1. AOP 思想概述 1.1. AOP 思想简介 1.2. AOP 的作用 2. AOP 底层技术实现 小风 Java 实战系列教程

More information

Microsoft PowerPoint - 07 派生数据类型

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

More information

设计模式 Design Patterns

设计模式 Design Patterns 丁勇 Email:[email protected] 组件技术概述 现在软件开发都已经转向了基于组件的开发, 目前具备代表性的组件技术有微软的 COM COM+, 有 Sun 的 Bean 和 EJB(Enterprise Bean), 另外还有 CORBA(Common Object Request Broker Architecture, 公 共对象请求代理结构 ) Bean Bean 规范将 软件组件

More information

文档 3

文档 3 1 2 3 4 5 6 / A B A B B A 7 8 9 10 11 12 OO A B A B 13 14 15 16 17 18 19 20 21 22 OOA OOA 23 24 25 OOA OOA 26 27 28 29 30 31 32 use case 33 use case 34 35 36 37 OOD OOA OOD 38 OOA 39 OOD 40 41 / 42 OOD

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

(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

JAVA 单元 2.1 四则运算机 ( 一 ) 单元教学进度设计 教学环节 教学内容 教师学生活动活动 反馈 反馈课前作业完成情况 反馈加分 1. 下面哪些是合法的变量名? ( ) A.2variable 答案 :DEG B..variable2 解答 : C.._whatavariable A:/

JAVA 单元 2.1 四则运算机 ( 一 ) 单元教学进度设计 教学环节 教学内容 教师学生活动活动 反馈 反馈课前作业完成情况 反馈加分 1. 下面哪些是合法的变量名? ( ) A.2variable 答案 :DEG B..variable2 解答 : C.._whatavariable A:/ 单元 2.1 四则运算机 ( 一 ) 单元教学进度设计 教学环节 教学内容 教师学生活动活动 反馈 反馈课前作业完成情况 反馈加分 1. 下面哪些是合法的变量名? ( ) A.2variable 答案 :DEG B..variable2 解答 : C.._whatavariable A:// 不能以数字开头 D._3_ B:// 不能用点和空格 提问 抢答 E.$anothervar C: // 不能用点和空格

More information

슬라이드 1

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

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

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

<4D F736F F F696E74202D C DB5DA3131D5C25FBCCCB3D0BACDB6E0CCAC2E BBCE6C8DDC4A3CABD5D>

<4D F736F F F696E74202D C DB5DA3131D5C25FBCCCB3D0BACDB6E0CCAC2E BBCE6C8DDC4A3CABD5D> 第 11 章继承和多态 1 动因 假设要定义一个类来对圆 矩形和三角形建模 这些类有 很多共同的特性 设计这些类来避免冗余的最好的方式是 什么? 答案就是使用继承 2 学习目标 通过继承由父类创建子类 ( 第 11.2 节 ) 使用关键字 super 调用父类的构造方法和方法 ( 第 11.3 节 ) 在子类中覆盖实例方法 ( 第 11.4 节 ) 区分覆盖和重载的不同 ( 第 11.5 节 ) 探究

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

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

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

Microsoft Word - 第5章.doc

Microsoft Word - 第5章.doc 上机实践 5 子类与继承 实验 1 中国人 北京人和美国人 1 相关知识点 由继承而得到的类称为子类, 被继承的类称为父类 ( 超类 ),Java 不支持多重继承, 即子类只能有一个父类 人们习惯地称子类与父类的关系是 is-a 关系 如果子类和父类在同一个包中, 那么, 子类自然地继承了其父类中不是 private 的成员变量作为自己的成员变量, 并且也自然地继承了父类中不是 private 的方法作为自己的方法,

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

Microsoft PowerPoint - ch12 [Compatibility Mode]

Microsoft PowerPoint - ch12 [Compatibility Mode] 第十二章 面向对象语言的编译 本章内容 概述面向对象语言的重要概念和实现技术 以 C++ 语言为例, 介绍如何将 C++ 程序翻译成 C 程序 实际的编译器大都把 C++ 程序直接翻译成低级语言程序 12.1 面向对象语言的概念 12.1.1 对象和对象类 对象 由一组属性和操作于这组属性的过程组成 属性到值的映射称为对象的状态, 过程称为方法 对象类 一类对象的总称, 规范了该类中对象的属性和方法,

More information

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

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

More information

《大话设计模式》第一章

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

More information

Microsoft PowerPoint - 5. 指针Pointers.ppt [兼容模式]

Microsoft PowerPoint - 5. 指针Pointers.ppt [兼容模式] 指针 Pointers 变量指针与指针变量 Pointer of a variable 变量与内存 (Variables and Memory) 当你声明一个变量时, 计算机将给该变量一个内存, 可以存储变量的值 当你使用变量时, 计算机将做两步操作 : - 根据变量名查找其对应的地址 ; - 通过地址对该地址的变量内容进行读 (retrieve) 或写 (set) 变量的地址称为变量的指针! C++

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

Microsoft Word - 第5章.doc

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

More information

1: public class MyOutputStream implements AutoCloseable { 3: public void close() throws IOException { 4: throw new IOException(); 5: } 6:

1: public class MyOutputStream implements AutoCloseable { 3: public void close() throws IOException { 4: throw new IOException(); 5: } 6: Chapter 15. Suppressed Exception CH14 Finally Block Java SE 7 try-with-resources JVM cleanup try-with-resources JVM cleanup cleanup Java SE 7 Throwable getsuppressed Throwable[] getsuppressed() Suppressed

More information

Wy159.mps

Wy159.mps 第 章 系 统 开 发 方 法 管 理 信 息 系 统 开 发 的 效 率 质 量 成 本 及 用 户 的 满 意 程 度, 除 了 管 理 技 术 等 因 素 外, 还 与 系 统 开 发 方 法 密 切 相 关 管 理 信 息 系 统 从 产 生 到 现 在 已 经 发 展 了 许 多 开 发 方 法, 这 些 开 发 方 法 各 自 遵 循 一 定 的 基 本 思 想, 适 用 于 一 定 的

More information