<4D F736F F D20B5DA32D5C220C3E6CFF2B6D4CFF3B3CCD0F2C9E8BCC6B3F5B2BD2E646F6378>

Size: px
Start display at page:

Download "<4D F736F F D20B5DA32D5C220C3E6CFF2B6D4CFF3B3CCD0F2C9E8BCC6B3F5B2BD2E646F6378>"

Transcription

1 Android 系统下 Java 编程详解 作者 : 华清远见 第 2 章面向对象程序设计初步 本章简介 本章从面向对象的概念出发, 介绍了程序设计种类 面向对象程序设计的特征 ; 介绍了面向对象程序设计中的对象 类 属性等重要概念 ; 并描述了类 属性 方 法的定义和声明 ; 讲述了类的构造器的概念及使用, 介绍对象的创建和使用 讲述 如何通过类的定义来实现信息隐藏和封装 ; 介绍了 Java 源文件的结构,package 和 import 的用法 ;JDK 中的常用的包

2 2.1 面向对象概念 从结构化程序设计到面向对象程序设计面向对象程序设计与结构化程序设计都是设计和构造程序的方法 近年来面向对象程序设计的方法越来越受到人们的重视, 成为解决软件危机的新途径, 而结构化程序设计方法的使用在逐渐减少 几乎每一种最新推出的程序开发工具或语言都采用了面向对象程序设计的思路, 面向对象程序设计形成了一套与结构化程序设计具有很大差异的方法 结构化程序设计方法又称面向过程设计方法, 起源于 20 世纪 70 年代 在这之前的程序设计基本采用过程式程序设计, 虽然汇编语言已经取代了机器语言, 但是对于一般的程序设计人员而言, 它还是太抽象 太隐晦了 如果计算机要得到更大的发展, 必须发明一些比汇编语言更易于阅读 编写的程序语言 在这种需求的刺激下, 结构化程序设计方式产生了机构化程序设计, 主要特点是采用自顶向下 逐步求精的程序设计方法 : 使用 3 种基本控制结构构造程序, 任何程序都可由顺序 选择 重复 3 种基本控制结构构造 结构化设计的根本目标就是把复杂的系统分解成简单模块的层次结构 例如, 你要装修房子, 以前的过程式程序设计要求你必须从客厅开始装修, 然后是卧室 厨房 卫生间, 顺序不能颠倒, 客厅没装好之前, 休想踏进你的卧室半步 而结构化程序设计方式将你的客厅 卧室 卫生间 厨房都独立成一个模块, 互相之间可以互不干扰地进行 虽然结构化程序设计解决了软件设计开发中的一部分问题, 但是它仍然存在不足 用结构化方法开发的软件, 其稳定性 可修改性和可重用性都比较差, 这是因为结构化方法的本质是功能分解, 从代表目标系统整体功能的单个处理着手, 自顶向下不断把复杂的处理分解为子处理, 这样一层一层地分解下去, 直到仅剩下若干个容易实现的子处理功能为止, 然后用相应的工具来描述各个最低层的处理 因此, 结构化方法是围绕实现处理功能的 过程 来构造系统的 然而, 用户需求的变化大部分是针对功能的, 因此, 这种变化对于基于过程的设计来说是灾难性的 用这种方法设计出来的系统结构常常是不稳定的, 用户需求的变化往往造成系统结构的较大变化, 从而需要花费很大代价才能实现这种变化 结构化程序设计的局限性催生了面向对象的思想 面向对象 (OO) 并不是一个新概念, 它在 20 世纪 70 年代就出现了, 但是, 因为受到软 / 硬件的限制, 直到 90 年代, 它才为大众所接受并成为程序设计的主流思想 面向对象的方法与结构化的程序设计根本区别在于把系统看成一起工作来完成某项任务的对象集合, 而对象是系统对消息做出响应的事物, 所以面向对象方法中最值得关注的不是它应该做什么, 而是它如何做出反应, 也就是消息, 这是和结构化设计的根本不同 在面向对象的设计思想指导下, 产生了第一个面向对象的语言 20 世纪 60 年代的 Simula-67 它的目的是解决模拟问题 一个典型的应用是模拟银行系统的运作 ( 银行是最早采用计算机的行业之一 ), 将银行的出纳部门 客户 业务等实体模拟成一个个的对象, 把这些在程序的运行中除了状态外其他方面都一样的对象归纳在一起, 就成了更高抽象层面的 类 在面向对象思想指导下产生了成功的面向对象编程语言 Smalltalk 并且, 在此基础上又诞生了应用更加广泛的面向对象编程语言 C++ 及 Java 面向对象特征 1. 对象唯一性每个对象都有自身唯一的标识, 通过这种标识, 可找到相应的对象 在对象的整个生命期中, 它的标识都不改变, 不同的对象不能有相同的标识 2. 抽象性抽象性是指将具有一致的数据结构 ( 属性 ) 和行为 ( 操作 ) 的对象抽象成类 一个类就是这样一种抽象, 它反映了与应用有关的重要性质, 而忽略其他一些无关内容 任何类的划分都是主观的, 但必须与具体的应用有关 3. 封装性 2

3 封装性就是把对象的属性和服务结合成一个独立的单位, 并尽可能隐蔽对象的内部细节 4. 继承性继承性是子类自动共享父类数据结构和方法的机制, 这是类之间的一种关系 在定义和实现一个类的时候, 可以在一个已经存在的类的基础上来进行, 把这个已经存在的类所定义的内容作为自己的内容, 并加入若干新的内容 继承性是面向对象程序设计语言不同于其他语言的最重要的特点, 是其他语言所没有的 5. 多态性多态性是指相同的操作或函数 过程可作用于多种类型的对象上并获得不同的结果 不同的对象收到同一消息可以产生不同的结果, 这种现象称为多态性 2.2 面向对象程序设计 知识准备 : 面向对象编程术语 类 (Class): 类是对某种类型的对象定义变量和方法的原形 它表示对现实生活中一类具有相同特征的事物的抽象, 是面向对象编程的基础 对象 (Object): 也称为实例 (Instance), 是类的具体存在 属性 (Attribute): 也称为成员变量 实例变量 (Instance Variable) 字段(Field), 表示一个对象所具有的状态 本书中, 通常使用变量或者属性来称呼它 方法 (Method): 用于表示对象可以执行的动作, 它包括名称 参数 返回类型, 以及方法体等内容 构造器 (Constructor): 也称为 构造方法 用于创建和初始化一个实例的特殊方法, 包括名称 参数及 方法体 等, 需要注意的是, 它的名称必须和类名一致 包 (Package): 可以使用它来组织编写类, 使得类的组织更加有序 知识准备 : 对象我们每天的生活 工作, 无时无刻不在和 对象 打交道 衣服 食物 房子 汽车等 当处理这些对象时, 不会将这些对象的属性 ( 对象所具有的特点 ) 和操作分开 如进出 房间 时, 不会将 房门 这个属性和 开门 这个操作分开, 它们是联系在一起的 面向对象的编程思想力图使得程序和现实世界中的具体实体完全一致 人们通过观察对象的属性和行为来了解对象 对象的属性描述了对象的状态, 对象的行为描述了对象的功能 对象一般有如下特性 : (1) 有一个名字以区别于其他对象 (2) 有一些状态用来描述它的某些特征 (3) 有一组操作, 每个操作决定了对象的一种功能或行为 这样, 可以让程序员乃至非专业人员更好地理解程序 它涉及一个从 具体 到 抽象, 再从 抽象 到 具体 的过程 所谓 从 具体 到 抽象, 也就是将现实世界中的一个个具体的 物体 ( 或称为 实体 (Entity) ) 相应的特征和行为抽象出来, 并且将各种具有相同特征的 物体 分为一个个的 类, 如 汽车 类 人 类 房子 类等 ; 而所谓 从 抽象 到 具体, 就是将上面抽象出来的对应物体的 类, 使用具体的计算机语言来描述, 比如, 使用 Java 语言来描述 汽车 类 人 类 房子 类等, 和使用 C++ 语言来描述这些类是有区别的 3

4 正如前面所述, 类 相对于现实世界中的 实体种类 (Entity Category), 如汽车 人类 房子等, 它是现实生活中某类实体的抽象 而对象, 或者实体 (Instance), 指的是这些种类中的一个个具体存在, 如 Benz-600 Santana-2000 等具体的汽车, 或者张三 李四等具体的个人 类和对象是面向对象编程思想中的核心和基础 类是作为对象的蓝图而存在的, 所有的对象都依据相应的类来产生, 在面向对象的术语中, 这个产生对象的过程称为 实例化 用一个具体的例子来进一步说明 类 和 对象 之间的联系与区别 以汽车为例, 只要是汽车, 都应该有以下一些特性 : 轮子 引擎 方向盘 刹车等组件, 可以通过这些组件来操作汽车, 改变汽车的状态, 如加速 转向 减速等, 这些都是汽车的共性 具体到某辆汽车, 它可能有 80cm 的轮子 40cm 的方向盘 A6 引擎, 它是一个确定的实例 使用 汽车类 这个蓝图, 就可以生产出一辆辆的汽车 实例 这和盖房子一样, 根据一张图纸, 可以盖出任意数量的房子, 而这些房子都有一样的特征 知识准备 : 类 如果说一切都可以成为对象, 那么是什么决定了某一类对象的外观和行为呢? 类是对某个对象的定义, 用来描述一组具有相同特征对象的 : (1) 应包括的数据 (2) 行为特征 类包含有关对象动作方式的信息, 包括它的名称 方法 属性和事件 实际上类本身并不是对象, 因为它不存在于内存中 当引用类的代码运行时, 类的一个新的实例, 即对象, 就在内存中创建了 一个类能从这个类在内存中创建多个相同类型的对象 因此, 类应该包括两个方面的内容 (1) 属性 : 用来描述对象的数据元素称为对象的属性 ( 也称为数据 / 状态 ) (2) 方法 : 对对象的属性进行的操作称为对象的方法 ( 也称为行为 / 操作 ) 知识准备 : 类的声明 Java 语言中类的声明, 也称类的定义, 其语法规则如下 : [< modifiers>] class < class_name> { [<attribute_declarations>] [<constructor_declarations>] [<method_declarations>] 其中各组成部分的含义如下 : <modifiers> 为修饰符, 可用的有 public abstract 和 final 等关键字 ( 关键字是 Java 语言中赋以特定含义, 并用做专门用途的单词, 类名 方法名和属性名及变量名不能是关键字 ), 用于说明所定义的类有关方面的特性 对于各种关键字和它们的含义及各自的适用范围, 请看后续章节的介绍 类成员有 3 种不同的访问权限 : (1) 公有 ( public 关键字修饰 ) 类成员可以在类外访问 (2) 私有 ( private 关键字修饰 ) 类成员只能被该类的成员函数访问 (3) 保护 ( protected 关键字修饰 ) 类成员只能被该类的成员函数或派生类的成员函数访问 class 关键字表明这是一个类的定义, 将告诉你一个新类型的对象看起来是什么样的 <class_name> 是类的名字, 类名一般使用一个用于表示这个类的名词来表示 <attribute_declarations> 是属性 (Attribute) 声明部分 <constructor_declarations> 是构造器 (Constructor) 声明部分 <method_declarations> 是方法 (Method) 声明部分 可以将上述的 学生 实体的基本特征当成 学生 类的属性, 然后, 再定义一些方法来对这些属性进行操作 这里, 将这些操作属性的方法定义得很简单 : 每个属性都有相应的设置 (setter) 和获取 (getter) 方法, 设置方法将传入的参数赋给对象的属性, 而获取方法取得对象的属性 源文件 :Student.java 4

5 public class Student { // 定义属性 String name; String sex; int grade; int age; // 定义属性 name 的设置方法 public void setname(string _name) { name = _name; // 定义属性 name 的获取方法 public String getname() { return name; // 定义属性 Sex 的设置方法 public void setsex(string _sex) { sex = _sex; // 定义属性 Sex 的获取方法 public String getsex() { return sex; // 定义属性 grade 的设置方法 public void setgrade(int _grade) { grade = _grade; // 定义属性 grade 的获取方法 public int getgrade() { return grade; // 定义属性 age 的设置方法 public void setage(int _age) { age = _age; // 定义属性 age 的获取方法 public int getage() { return age; 知识准备 : 属性的声明 类的定义中所包含的数据称为属性, 也称为数据成员, 比如 节示例中的 Student 类中定义了 4 个属性 name sex grade age 属性声明的语法规则如下: [< modifiers>] <data_type> < attr_name>; 其中 : < modifiers> 为修饰符, 可用的有 public private protected final static 等, 用于说明该属性的一些性质 <data_type> 是该属性的数据类型, 属性可以是 Java 基本类型的一种, 如下面的示例中 MyClass 类中声明的属性 classid 等, 也可以是任何类型的对象, 可以通过引用它进行通信 例如 MyClass 类中声明的属性 myteacher <attr_name> 是属性名称, 属性名称的首字母一般采用小写方式 MyClass.java 5

6 public class MyClass { int classid; String classname; int studentnumber; Teacher myteacher; Teacher.java public class Teacher { String name; int id; String course; 知识准备 : 方法的声明 类的定义中还可以包含方法的声明,Java 的方法决定了对象可以接收什么样的信息, 方法的基本组成部分包括名称 参数 返回值和方法体 其语法规则如下 : < modifiers> <return_type> <name>([< argu_list>]) { [< method body>] 其中 : < modifiers> 为修饰符, 可用的有 public private protected abstract static 和 final, 用于说明方法的属性 <return_type> 是该方法的返回值类型, 可以是任何合法的 Java 数据类型 <name> 是方法名 <argu_list> 是方法的参数列表, 包括要传给方法的信息的类型和名称, 如有多个参数, 中间用逗号, 分隔 <method body> 是方法体, 有 0 到多行 Java 语句 下面在 节示例 MyClass 类中声明一个名为 ChangeTeacher 的方法, 当大多数同学对老师不满意时, 可以使用这个方法来换个给力的老师, 并返回老师的名字 public class MyClass { int classid; String classname; int studentnumber; Teacher myteacher; public String ChangeTeacher(Teacher t){ System.out.print("change a teacher"); this.myteacher = t; return t.name; 注意 : 1. 参数列表传递的实际上是引用, 引用的对象类型必须和参数类型一致, 不然编译器会报错 2.Java 语言中类 方法及属性声明的次序并无严格要求 知识准备 : 构造器 ( 构造方法 ) 在 Java 程序中, 每个类都必须至少有一个构造器 (Constructor) 构造器是创建一个类的实例( 对象 ) 时需要调用的一个特殊的方法 利用构造器可以产生一个类的实例, 并且提供了一个地方用来定义创建类的实例时都需要执行的初始化 (initialize) 代码 构造器的定义语法如下 : 6

7 <modifier> <class_name> ( [<argument_list>] ) { [<statements>] 从上面的语法中可以看出, 它和类中的方法定义很类似 : 可以有访问修饰符 modifier 有自己的方法名称 有参数列表 有方法体, 因此, 可以将构造器当成一个特殊的方法 ( 在许多资料里面, 就是将 Constructor 称为构造方法 ), 这个方法的作用就是用来产生一个类的实例 但是要认识到构造器与普通方法的区别, 主要表现在以下 3 个方面 (1) 修饰符 : 和方法一样, 构造器可以有任何访问的修饰 :public protected private 或者没有修饰 不同于方法的是, 构造器不能有以下非访问性质的修饰 :abstract final native static 或者 synchronized (2) 返回值 : 方法能返回任何类型的值或者无返回值 (void), 构造器没有返回值, 也不需要 void (3) 命名 : 构造器使用和类相同的名字, 通常为名词 而方法则不同, 通常为描述一个操作的动词 按照习惯, 方法通常用小写字母开始, 而构造器通常用大写字母开始 下面定义一个用来表示 美食 的类 Food 源文件 :Food.java public class Food { private String food_name ; public Food(String name){ this.food_name = name; 在 Food 类中, 定义了一个属性 food_name, 还定义了一个构造器, 在构造器中传入一个字符串类型的参数, 将参数值赋给属性 food_name 此时, 就可以通过这个构造器来实例化这个类, 如下所示 Food mydinner = new Food("pizza"); 这样, 就得到了一个 food_name 名为 pizza 的实例, 还可以再创建一个 food_name 名为 cola 的实例来搭配你的晚餐 如果在程序中没有定义任何的构造器, 则编译器将会自动加上一个不带任何参数的构造器 默认的构造器不带任何的参数, 也没有 方法体 通过上面的示例, 在 Food 类中定义了一个带一个参数的构造器 如果上面的 Food 类没有定义构造器, 则编译器会自动加上一个构造器 : public class Food { private String food_name ; public Food(){ 所以, 这时可以用下面的语句来实例化这个类 : Food mydinner = new Food(); 如果在程序中定义了构造器, 则编译器将不再提供默认的构造器, 即使定义的构造器同样没有参数 如果再使用默认构造器的话, 编译器会报错 知识准备 : 对象的创建和使用 正确声明了 Java 类之后, 便可以在其他的类或应用程序中使用该类了 使用类是通过创建该类的对象并访问对象成员来实现的 对象成员是指一个对象所拥有的属性或可以调用的方法, 现阶段可以理解为对象所属的类中定义的所有属性和方法 一个对象的声明实际上只是对该类的引用, 需要使用 new+ 构造器 ( 又称为构造方法 ) 创建对象, 此时存储器会给此对象相应的存储空间 当对象被成功创建后, 可以使用 对象名. 对象成员 的方式访问对象成员 7

8 2.2.9 任务一 : 创建并引用一个对象 1. 任务描述 创建一个美食类, 并引用该类的对象, 列出一天的食谱 2. 技能要点 (1) 声明类 属性及方法 (2) 对象的创建和引用 3. 任务实现过程 (1) 定义一个用于表示 食物 的类 Food ; 在类中声明一个 food_name 属性 ; 给 food_name 属性添加 get() set() 方法 (2) 在 Recipe 类中, 通过默认构造方法创建 3 个 Food 对象, 通过 setfood_name(string name) 方法给 food_name 赋值, 并通过 getfood_name() 方法获得 food_name 属性值, 并输出 源文件 :Recipe.java public class Recipe { public static void main(string args[]) { Food breakfast = new Food(); breakfast.setfood_name("bread"); Food lunch = new Food(); lunch.setfood_name("nuddle"); Food dinner = new Food(); dinner.setfood_name("pizza"); System.out.print("my breakfast is "+breakfast.getfood_name()+"\n"); System.out.print("my lunch is "+lunch.getfood_name()+"\n"); System.out.print("my dinner is "+dinner.getfood_name()); class Food { private String food_name ; public String getfood_name() { return food_name; public void setfood_name(string foodname) { food_name = foodname; 程序运行结果 : my breakfast is bread my lunch is nuddle my dinner is pizza 提示 : Java 中创建的对象并不用担心销毁问题 因为 Java 对象不具备和基本类型一样的生命周期, 由 new 创建的对象, 会一直保留下去, 直到 Java 的垃圾回收器辨别出此对象不会再被引用, 自动释放该对象的内存空间 技能拓展任务 : 带参数构造器的声明与使用 1. 任务描述改写任务一的程序, 使用带参数构造器, 实现同样的输出结果 2. 技能要点带参数构造器的声明和引用 8

9 3. 任务实现过程 (1) 定义一个用于表示 食物 的类 Food ; 在类中声明一个 food_name 属性 ; 给 food_name 属性添加 get() set() 方法 (2) 给 Food 类添加两个构造方法, 一个带参数, 一个不带参数 (3) 在 Recipe 类中, 通过带参数构造方法创建两个 Food 对象, 通过 getfood_name() 方法获得 food_name 属性值, 并输出 (4) 在 Recipe 类中, 通过不带参数构造方法创建一个 Food 对象, 通过 setfood_name(string name) 方法给 food_name 赋值并输出 源文件 :Recipe.java public class Recipe { public static void main(string args[]) { Food breakfast = new Food("bread"); Food lunch = new Food("noddle"); Food dinner = new Food(); dinner.setfood_name("pizza"); System.out.print("my breakfast is "+breakfast.getfood_name()+"\n"); System.out.print("my lunch is "+lunch.getfood_name()+"\n"); System.out.print("my dinner is "+dinner.getfood_name()); class Food { private String food_name ; public String getfood_name() { return food_name; public void setfood_name(string foodname) { food_name = foodname; public Food(String name){ this.food_name = name; public Food(){ 程序运行结果 : my breakfast is bread my lunch is nuddle my dinner is pizza 注意 : 因为类 Food 定义了一个带参数的构造器, 所以, 编译器不会给它加上一个默认的不带参数的构造器, 此时, 如果还试图使用默认的构造器来创建对象, 将不能通过编译 如需要不带参数构造器, 则自行定义使用 2.3 信息的封装和隐藏 知识准备 : 信息的封装 封装指的是将对象的状态信息 ( 属性 ) 和行为 ( 方法 ) 捆绑为一个逻辑单元的机制 Java 中通过将数据封装声明为私有的 (private), 再提供一个或多个公开的 (public) 方法实现对该属性的操作, 以实现下述目的 : 隐藏一个类的属性和实现细节, 仅对外公开接口, 控制在程序中属性的可读和修改的访问级别 9

10 增强安全性, 防止对封装数据的未经授权的访问 使用者只能通过事先定制好的方法来访问数据, 可以方便地加入控制逻辑, 限制对属性的不合理操作 有利于保证数据的完整性 便于修改, 增强代码的可维护性 实现封装的关键是不要让方法直接访问其他类的属性, 程序应该只能通过指定的方法与对象交互数据 封装赋予对象 黑盒 特性, 这是实现重用性和可靠性的关键 知识准备 : 信息的隐藏 如果允许用户对属性直接访问, 可能会引起一些不必要的问题, 如声明了一个 Group 类表示一个程序开发小组, 由属性 number 来记录小组成员数 如果允许程序随意给 number 属性赋值, 将值设置为 1000, 虽然这在语法上没有问题, 但是, 我们知道一个程序小组不可能有这么多的编程人员 如果在程序的其他部分用到了这个 number 属性, 可能出现问题 因此, 应该将属性定义为私有的 (private), 只有类本身才可以访问这个属性, 外部程序或者其他类不能访问它 可以定义一些 public 或 Default 方法来访问这些属性, 在方法中加入一些逻辑判断的方法来操作属性 将 number 的属性值设置为 2~100 之间, 小于 2 人时计做两人, 大于 100 人时计做 100 人 示例如下 : 源文件 :Group.java public class Group { private int number; public void setnumber(int s_number) { if (s_number > 100) { this.number = 100; else if (s_number< 2) { this.number = 2; else { this.number = s_number; 2.4 Java 源文件结构 Java 语言的源程序代码由一个或多个编译单元 (Compilation unit) 组成, 每个编译单元只能包含下列内容 ( 空格和注释除外 ), 如表 2-1 所示 表 2-1 Java 源文件结构结构作用要求 package 语句声明类所在的包 0 或 1 个, 必须放在文件开始 import 语句 从特定的包引入类 0 或多个, 必须放在所有类定义之前 public classdefinition 公共类定义部分 0 或 1 个 classdefinition 非公共类定义部分 0 或多个 interfacedefinition 接口定义部分 0 或多个 10

11 注意 : (1) 需要特别注意的是, Java 是严格区分大小写的 (2) 定义为 public 的类名必须与 Java 文件名称完全一致, 每个 Java 源文件只能有一个定义为 public 的类, 但可以有几个非 public 的类名 知识准备 :package 语句在大型项目开发中, 为了避免类名的重复, 经常使用 包 来组织各个类 例如, 公司用开发了一个类 Food, 公司乙也开发了一个类 Food, 现在需要同时用到这两个类, 为了将这两个类区分开来, 将这两个文件放在两个不同的目录下 那么, 在使用的时候如何准确地找到需要的类呢? 这就需要用到 包 (package) 这个概念 在 Java 程序中可以用 package 来指明这两个类的引用路径 : 将甲公司开发的 Student 类放到一个包 (package) 中, 而将乙公司开发的 Student 类放到另一个包 (package) 中 为了避免不同的公司之间类名的重复,Sun 建议使用公司 Internet 域名的倒写来当做包名, 例如, 使用域名 farsight.com.cn 的倒写 cn.com.farsight 来作为包的名称 如果现在有一个名为 Student 的类, 将它放到目录 cn\com\farsight 下, 然后再在程序中加入如下语句 : package cn.com.farsight; 这样, 这个类就可以和其他的名称为 Student 的类区分开了 package 语句的基本语法如下 : package <top_pkg_name> [.<sub_pkg_name>] * ; 在同一个项目组中, 经常用功能或模块的名称来作为子包名, 例如, 现在开发一个学员管理系统, 一个用于华清远见的管理模块, 一个用于清华附中的管理模块, 这两个功能模块中均有一个 Student 的类, 这时可以将华清远见管理模块中使用的 Student 放到 cn\com\farsight\college 目录下, 而将清华附中管理模块的 Student 类放到 cn\com\farsight\school 中, 这样, 这两个文件就不会冲突了 注意, 当将开发的类放到包中时, 必须将类的源文件放到与包名的元素相一致的目录结构中, 就如上面的学生类 Student, 如果在文件中加入了 package 语句 :package cn.com.farsight, 则必须将这个 Student 类文件放到 cn\com\farsight 目录下 在磁盘目录结构中, 使用 \ (Windows) 或 / (Unix/Linux/BSD) 来分隔各个层级的目录, 而在 Java 类文件中, 使用. 来分隔包的层次 Java 的核心包都放在 Java 包及其子包中, 而将很多扩展包放在 javax 包及其子包中 在 Java 核心包中, 也有一些重复的类名, 就是通过不同的包来区分的, 例如, 在 java.sql 包中, 有一个 Date 类, 而在 java.util 中, 也有一个 Date 类 通过将它们放在不同的包中, 就可以区分这两个类 一般来说, 如果在程序中使用 package 将程序打包, 则将程序放到对应的目录下, 这样, 才不违背 package 的设计初衷 如果将类的源文件 (.java 文件 ) 都放到同一个路径下, 只是将编译后的 class 文件放到不同的目录下, 上面提到的文件名冲突的问题依然存在 ( 同一个路径下不允许两个文件同名 ), 因此, 需要将源文件保存在不同的路径中 这时, 可以使用如下命令来编译文件 : javac cn\com\farsight\college\student.java 在 cn 目录的上一级目录下执行上述命令 如果程序是一个带 main 方法的应用程序, 可以在 cn 目录的上一级目录下执行这个文件, 命令如下 : java cn.com.farsight.college.student 注意编译和执行时的分隔符 因为在编译时, 需要指明的是文件的路径, 所以使用 \ 来分隔 ; 而在执行类文件时, 需要指明的是包名称, 所以使用. 来分隔 下面来看一个使用 package 的例子 源文件 :Student.java package cn.com.farsight; public class Student { 11

12 // 定义属性 private String studentid; // 定义属性 studentid 的设置方法 public void setstudentid(string student_id) { studentid = student_id; // 定义属性 studentid 的获取方法 public String getstudentid() { return studentid; 这个程序最好放在路径 cn\com\farsight 下, 然后再在 cn 的上一层路径执行如下的指令编译程序 : javac cn\com\farsight\student.java 而被编译后的 class 文件必须放置在 cn\com\farsight 路径下, 这样才可以成功地被其他程序引用 如果 Student 是一个应用程序 ( 有一个 main() 方法 ), 那么, 为了执行这个程序, 必须在 cn 的上一级目录执行如下的指令 : java cn.com.farsight.student 知识准备 :import 语句 在编译器定位你所创建的类所访问的其他类的过程中, 包 (package) 扮演了重要的角色 当编译器碰到一个类对另一个类的引用时, 它会在当前的包中和设置的 CLASSPATH 中寻找这个类, 以检查这个类是否能在这些路径中找到 import 语句应该出现在 package 语句之后 ( 如果有的话 ), 类的定义之前 package 语句只能有一个, 但是 import 语句可以有多个 可以使用 import 来引入包中的一个类, 也可以用 import 来引入指定包中的所有类 import 语句的基本语法如下 : import <pkg_name>[.<sub_pkg_name>].<class_name>; 或 import <pkg_name>[.<sub_pkg_name>].*; 引入一个类 : import cn.com.farsight.college.student 引入指定包中的所有类使用通配符 * : import cn.com.farsight.college.* 这样就可以引入包 cn.com.farsight.college 中的所有类 这两种方式对于引入相应的类并没有什么区别 但是, 如果只是需要一个包中有限的几个类, 建议采用第一种方式 ( 写明引入的类名 ) 会让人一目了然 另外, 需要注意的是, 通过 import 引入包中的类的时候, 它并不会递归地执行引入动作, 比如, 通过下面的语句 : import cn.com.farsight.*; 引入了 cn.com.farsight 这个包中的所有类, 但它并不会引入 cn.com.farsight.school 和 cn.com.farsight.colleage 中的类 要使用这两个包中的类, 还需要将它们使用 import 语句分别引入 Java 编译器默认为所有的 Java 程序引入了 JDK 的 java.lang 包中所有的类 (import java.lang.*;), 其中定义了一些常用类 :System String Object Math 等 因此可以直接使用这些类而不必显式引入 但使用其他非无名包中的类则必须先引入 后使用 另外, 可以通过在类名前加上不同的限制符, 如 public 等来控制类的适用范围 关于这些限制符及相应的使用范围, 将在后续章节介绍 注意 : 12

13 使用 import 并不会将相应的类或者包加载到 class 文件 ( 或者 Java 源文件 ), 也不会包含到 Java 源文件 ( 或者 class 文件 ) 中, 它的作用仅仅是对需要用到的类进行定位 (location) 它表示程序中用到某个类的时候, 如果没有在类前指定包名, 应该到当前目录或者 import 指定的包中去寻找 ( 注意 java.lang 包是默认引入的 ) 任务二 :package 语句和 import 语句实例 1. 任务描述编写一个 Parent 类, 在构造方法中输出 我是 parent, 放在 parent 包中, 编写一个 Child 类, 在构造方法中输出 我是 child 放在 child 包中,child 包是 parent 包的子包 使用 package 语句生成包, 并使用 import 引用子包 2. 技能要点 掌握包的创建和使用 通过给包命名创建包的层次 3. 任务实现过程 (1) 在 scr 默认包中创建 parent 包, 在此包中创建 Parent 类, 不带参数, 在构造方法中输出 I am a parent (2) 创建 parent 的子包 parent.child 包, 在此包中创建 Child 类, 不带参数, 在构造方法中输出 I am a child (3) 在 Parent 类中使用 import 语句引入 parent.child 包, 并创建 Parent 类和 Child 类对象, 实现输出 Parent.java package parent; import parent.child.child; public class Parent { public Parent(){ System.out.print("I am a parent"); public static void main(string[] args) { Child c = new Child(); Parent p = new Parent(); Child.java package parent.child; public class Child { public Child(){ System.out.print("I am a child \n"); 运行结果 : I am a child I am a parent 2.5 JDK 中常用的包 在 JDK 核心类库中, 提供了几千个类, 通过这些类, 可以基本实现用户界面设计 输出 / 输入 网络和日期等基本的目的 这些类都按照它们的功能 作用放在不同的包 (package) 中, 作为 Java 开发人员, 应该熟悉这些包, 并掌握下面的这些比较常用的包 13

14 java.lang 包含一些 Java 语言的核心类, 如 String Math Integer System 和 Thread, 提供常用功能 使用这个包中的类可以不用 import 语句来显式引入 在默认情况下, 编译器会将这个包自动引入到任何的 Java 程序中, 所以, 这个包中的类可以直接在程序中使用 java.net 包含执行与网络相关的操作的类 java.io 包含能提供多种输入 / 输出功能的类 java.util 包含一些实用工具类及数据结构类, 如定义系统特性 使用与日期日历相关的函数 集合 堆栈等 java.sql 包含用于访问数据库的类 虽然 JDK 中已经定义了大量的类供开发人员使用, 但是, 还是需要在此基础上定义自己的类来实现我们的目的, 当然, 在定义自己的类时, 可以使用类库中的类 2.6 本章小结 本章从面向对象的概念出发, 介绍了程序设计种类, 面向对象程序设计的特征和常用术语, 使读者对面向对象的概念和特点有初步了解 介绍了面向对象程序设计中的对象 类 属性等重要概念, 使读者可以掌握类 属性 方法的定义和声明, 构造器的概念及使用 ; 介绍了对象的创建和使用, 使读者可以掌握类与对象的创建和使用方法, 并了解到通过类的定义来实现信息隐藏和封装 ; 介绍了 Java 源文件的结构, 使读者可以掌握 package 和 import 的用法 ; 熟悉 JDK 中常用的包 课后练习题一 选择题 1. 下面的说法错误的是 ( ) A. 在 Java 中用引用来操纵对象 B. 在 Java 中类和对象的关系是父子关系 C. 一个类中可以有多个构造器 D. 构造器用来申请内存空间和初始化变量 2. 对于构造方法, 下列叙述错误的是 ( ) A. 构造器必须与类名相同 B. 构造器的返回类型只能是 void 型, 且书写格式是在方法名前加 void 前缀 C. 类的默认构造器是无参构造器 D. 创建新对象时, 系统会自动调用构造器 3. 下面说法错误的是 ( ) A. 用 package 语句可以导入一个包 B. 用 import 语句可以导入一个包中的类 C.package 语句必须是文件中的第一行非注释代码 D.import 语句可以放在代码中的任何地方 4. 下面包中的类不需要显式导入就可以直接使用的是 ( ) A.java.net B.java.io C.java.util D.java.lan 5. 下面说法正确的是 ( ) A. 一个.java 文件中可以有多个 public 类 B. 一个.java 文件中可以有多个类, 编译后生成一个 class 文件 14

15 C. 一个.java 文件中有几个类, 编译后就生成几个 class 文件 D. 一个 Java 类中必须有一个 main 方法 二 简答题 1. 简述类和对象的区别和联系 2. 简述类的构造器 3. 简述什么是封装及封装的意义 三 编程题 1. 汽车有 3 个属性 ( 型号 颜色 车牌号 ) 编写一个 Car 类来描述它, 要能用带参数的构造器赋值 2. 编写一个计算器类, 里面有两个操作数及加 减 乘 除 4 个方法 编写应用程序生成该类的对象, 并使用它的方法进行计算 联系方式 集团官网 : 嵌入式学院 : 移动互联网学院 : 企业学院 : 物联网学院 : 研发中心 :dev.hqyj.com 集团总部地址 : 北京市海淀区西三旗悦秀路北京明园大学校内华清远见教育集团 北京地址 : 北京市海淀区西三旗悦秀路北京明园大学校区, 电话 : /5 上海地址 : 上海市徐汇区漕溪路 250 号银海大厦 11 层 B 区, 电话 : 深圳地址 : 深圳市龙华新区人民北路美丽 AAA 大厦 15 层, 电话 : 成都地址 : 成都市武侯区科华北路 99 号科华大厦 6 层, 电话 : 南京地址 : 南京市白下区汉中路 185 号鸿运大厦 10 层, 电话 : 武汉地址 : 武汉市工程大学卓刀泉校区科技孵化器大楼 8 层, 电话 : 西安地址 : 西安市高新区高新一路 12 号创业大厦 D3 楼 5 层, 电话 :

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

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

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

无类继承.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

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

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

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

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

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

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

模板

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

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

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

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

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

<4D F736F F D20B5DA32D5C220416E64726F6964BFAAB7A2BBB7BEB3B4EEBDA82E646F6378>

<4D F736F F D20B5DA32D5C220416E64726F6964BFAAB7A2BBB7BEB3B4EEBDA82E646F6378> Android 应用程序开发与典型案例 作者 : 华清远见 第 2 章 Android 开发环境搭建 本章简介 本章主要介绍在 Windows 环境下,Android 开发环境的搭建步骤及注意事项, 包括 JDK 和 Java 开发环境的安装和配置 Eclipse 的安装 Android SDK 和 ADT 的安装和配置等 ; 同时介绍了 Android 开发的基本步骤 2.1 Android 开发环境的安装与配置

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

教案模板4-2

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

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

Microsoft Word - word模板-教师.doc

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

More information

untitled

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

More information

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

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

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

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

设计模式 Design Patterns

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

More information

Microsoft Word - 第2章.doc

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

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

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

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

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

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

Guava学习之Resources

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

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

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

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

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

Microsoft Word - JCS5.doc

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

More information

输入 project name 选择完成

输入 project name 选择完成 JAVA 程序访问 HighGo DB 的环境准备 山东瀚高科技有限公司版权所有仅允许不作任何修改的转载和转发 Hibernate 的配置 MyEclipse 中创建新项目 : 选择菜单栏 file---new---project 选择 web project 进行下一步 输入 project name 选择完成 4. 单击 " 添加 JAR/ 文件夹 ", 会如下图出现 JDBC 下载 Hibernate

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

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

姓名 : 年级专业 : 学号 : 凡年级专业 姓名 学号错写 漏写或字迹不清者, 成绩按零分记 密 封 线 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

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

本章学习目标 小风 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

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

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

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

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

Spring3.x开发入门

Spring3.x开发入门 Spring Bean 管理 Spring 的工厂类 课程安排 Spring 的 Bean 管理 (XML 方式 ) Spring 的属性注入 (XML 方式 ) Spring 的 Bean 管理 ( 注解方式 ) Spring 的属性注入 ( 注解方式 ) Spring 的工厂类 Spring 的 Bean 管理 (XML 方式 ) 三种实例化 Bean 的方式 使用类构造器实例化 ( 默认无参数

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

untitled

untitled 1 Outline 料 類 說 Tang, Shih-Hsuan 2006/07/26 ~ 2006/09/02 六 PM 7:00 ~ 9:30 聯 ives.net@gmail.com www.csie.ntu.edu.tw/~r93057/aspnet134 度 C# 力 度 C# Web SQL 料 DataGrid DataList 參 ASP.NET 1.0 C# 例 ASP.NET 立

More information

Agilent N5700 N5741A-49A, N5750A-52A, N5761A-69A, N5770A-72A W 1500 W 600 V 180 A 1 U Vac AC LAN,USB GPIB Agilent N5700 1U 750W 1500W 24

Agilent N5700 N5741A-49A, N5750A-52A, N5761A-69A, N5770A-72A W 1500 W 600 V 180 A 1 U Vac AC LAN,USB GPIB Agilent N5700 1U 750W 1500W 24 Agilent N700 N71A-9A, N70A-2A, N761A-69A, N770A-72A 2 70 W 100 W 600 V 180 A 1 U 8-26 Vac AC LAN,USB GPIB Agilent N700 1U 70W 100W 2 6V 600V 1.A 180A N700 1U 19 100W LED N700 OVP UVL UVL OVP N700 GPIB

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

附录J:Eclipse教程

附录J:Eclipse教程 附 录 J:Eclipse 教 程 By Y.Daniel Liang 该 帮 助 文 档 包 括 以 下 内 容 : Eclipse 入 门 选 择 透 视 图 创 建 项 目 创 建 Java 程 序 编 译 和 运 行 Java 程 序 从 命 令 行 运 行 Java Application 在 Eclipse 中 调 试 提 示 : 在 学 习 完 第 一 章 后 使 用 本 教 程 第

More information

chp4

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

More information

前言 C# C# C# C C# C# C# C# C# microservices C# More Effective C# More Effective C# C# C# C# Effective C# 50 C# C# 7 Effective vii

前言 C# C# C# C C# C# C# C# C# microservices C# More Effective C# More Effective C# C# C# C# Effective C# 50 C# C# 7 Effective vii 前言 C# C# C# C C# C# C# C# C# microservices C# More Effective C# More Effective C# C# C# C# Effective C# 50 C# C# 7 Effective vii C# 7 More Effective C# C# C# C# C# C# Common Language Runtime CLR just-in-time

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

获取 Access Token access_token 是接口的全局唯一票据, 接入方调用各接口时都需使用 access_token 开发者需要进行妥善保存 access_token 的存储至少要保留 512 个字符空间 access_token 的有效期目前为 2 个小时, 需定时刷新, 重复

获取 Access Token access_token 是接口的全局唯一票据, 接入方调用各接口时都需使用 access_token 开发者需要进行妥善保存 access_token 的存储至少要保留 512 个字符空间 access_token 的有效期目前为 2 个小时, 需定时刷新, 重复 获取 Access Token access_token 是接口的全局唯一票据, 接入方调用各接口时都需使用 access_token 开发者需要进行妥善保存 access_token 的存储至少要保留 512 个字符空间 access_token 的有效期目前为 2 个小时, 需定时刷新, 重复 获取将导致上次获取的 access_token 失效 接入方可以使用 AppID 和 AppSecret

More information

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

KillTest 质量更高 服务更好 学习资料   半年免费更新服务 KillTest 质量更高 服务更好 学习资料 http://www.killtest.cn 半年免费更新服务 Exam : 1Z0-854 Title : Java Standard Edition 5 Programmer Certified Professional Upgrade Exam Version : Demo 1 / 12 1.Given: 20. public class CreditCard

More information

Struts2自定义类型转换.doc

Struts2自定义类型转换.doc Struts2 自定义类型转换 原理 struts2 的自定义类型转换机制为复杂类型的输入输出处理提供了便捷.struts2 已经为我们提供了几乎所有的 primitive 类型以及常用类型 ( 如 Date) 的类型转换器, 我们也可以为我们自定义类添加自定义类型转化器. struts2 为我们提供了一个类型转化器的入口 : ognl.defaulttypeconverter, 或继承 org.apache.struts2.util.strutstypeconverter,

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

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

Learning Java

Learning Java Java Introduction to Java Programming (Third Edition) Prentice-Hall,Inc. Y.Daniel Liang 2001 Java 2002.2 Java2 2001.10 Java2 Philip Heller & Simon Roberts 1999.4 Java2 2001.3 Java2 21 2002.4 Java UML 2002.10

More information

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

More information

9, : Java 19., [4 ]. 3 Apla2Java Apla PAR,Apla2Java Apla Java.,Apla,,, 1. 1 Apla Apla A[J ] Get elem (set A) A J A B Intersection(set A,set B) A B A B

9, : Java 19., [4 ]. 3 Apla2Java Apla PAR,Apla2Java Apla Java.,Apla,,, 1. 1 Apla Apla A[J ] Get elem (set A) A J A B Intersection(set A,set B) A B A B 25 9 2008 9 M ICROEL ECTRON ICS & COMPU TER Vol. 25 No. 9 September 2008 J ava 1,2, 1,2, 1,2 (1, 330022 ; 2, 330022) :,. Apla - Java,,.. : PAR ;Apla - Java ; ;CMP ; : TP311 : A : 1000-7180 (2008) 09-0018

More information

chp6.ppt

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

More information

<4D F736F F F696E74202D20A1B64A617661B8DFBCB6BCBCCAF5A1B7B5DA31312E35BDB220B6AFCCACC0E0D0CDBCECB2E92E707074>

<4D F736F F F696E74202D20A1B64A617661B8DFBCB6BCBCCAF5A1B7B5DA31312E35BDB220B6AFCCACC0E0D0CDBCECB2E92E707074> Java 高级技术 课程 Java 语言的高级特性 (8) 李戈 北京大学信息科学技术学院软件研究所 2008 年 5 月 11 日 运行期类型识别 RTTI ( Run-Time Type Identification ) 在运行期间, 识别一个对象的类型 运行期类型识别 RTTI 的三种方法 强制类型转换 利用 Class 对象 通过比较识别类型 (1) 利用强制类型转换判别运行期类型 class

More information

* 4 6 R P r p . 1 2 3 4 7 89bk 6 5 1 2 3 4 5 6 7 8 9 0 bk r bl bm bn^ bo bl br bq bpbo bn bm [ ] [ ] [ ] bp 8 2 4 6 bq p [ ] [SET] br clckbt bs bs bt ck cl. 1 2 1 2+- 3 3 . 1 2 3 4 5 6 7 8 9 bk bl bm

More information

《大话设计模式》第一章

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

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

北 风 网 讲 师 原 创 作 品 ---- 仅 供 学 员 内 部 交 流 使 用 前 言 吾 尝 终 日 而 思 矣, 不 如 须 臾 之 所 学 也 ; 吾 尝 跂 而 望 矣, 不 如 登 高 之 博 见 也 登 高 而 招, 臂 非 加 长 也, 而 见

北 风 网 讲 师 原 创 作 品 ---- 仅 供  学 员 内 部 交 流 使 用 前 言 吾 尝 终 日 而 思 矣, 不 如 须 臾 之 所 学 也 ; 吾 尝 跂 而 望 矣, 不 如 登 高 之 博 见 也 登 高 而 招, 臂 非 加 长 也, 而 见 北 风 网 讲 师 原 创 作 品 ---- 仅 供 www.ibeifeng.com 学 员 内 部 交 流 使 用 前 言 吾 尝 终 日 而 思 矣, 不 如 须 臾 之 所 学 也 ; 吾 尝 跂 而 望 矣, 不 如 登 高 之 博 见 也 登 高 而 招, 臂 非 加 长 也, 而 见 者 远 ; 顺 风 而 呼, 声 非 加 疾 也, 而 闻 者 彰 假 舆 马 者, 非 利 足 也,

More information

Microsoft Word - 01.DOC

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

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

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

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

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 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

<4D6963726F736F667420506F776572506F696E74202D20332D322E432B2BC3E6CFF2B6D4CFF3B3CCD0F2C9E8BCC6A1AAD6D8D4D8A1A2BCCCB3D0A1A2B6E0CCACBACDBEDBBACF2E707074>

<4D6963726F736F667420506F776572506F696E74202D20332D322E432B2BC3E6CFF2B6D4CFF3B3CCD0F2C9E8BCC6A1AAD6D8D4D8A1A2BCCCB3D0A1A2B6E0CCACBACDBEDBBACF2E707074> 程 序 设 计 实 习 INFO130048 3-2.C++ 面 向 对 象 程 序 设 计 重 载 继 承 多 态 和 聚 合 复 旦 大 学 计 算 机 科 学 与 工 程 系 彭 鑫 pengxin@fudan.edu.cn 内 容 摘 要 方 法 重 载 类 的 继 承 对 象 引 用 和 拷 贝 构 造 函 数 虚 函 数 和 多 态 性 类 的 聚 集 复 旦 大 学 计 算 机 科 学

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

使用MapReduce读取XML文件

使用MapReduce读取XML文件 使用 MapReduce 读取 XML 文件 XML( 可扩展标记语言, 英语 :extensible Markup Language, 简称 : XML) 是一种标记语言, 也是行业标准数据交换交换格式, 它很适合在系统之间进行数据存储和交换 ( 话说 Hadoop H ive 等的配置文件就是 XML 格式的 ) 本文将介绍如何使用 MapReduce 来读取 XML 文件 但是 Had oop

More information

public class Phone { String brand; double price; void call(){ System.out.println("hi,how are you doing"); 案例 3-2 对象的创建及对象内存图 1 考核知识点对象的创建和引用 掌握创建对象的方式

public class Phone { String brand; double price; void call(){ System.out.println(hi,how are you doing); 案例 3-2 对象的创建及对象内存图 1 考核知识点对象的创建和引用 掌握创建对象的方式 第三章补充案例 案例 3-1 类的定义 1 考核知识点类的定义 掌握类定义的格式 掌握如何在类中定义成员变量和成员方法 3 需求分析在程序中, 设计一个表示学生的类, 该类具有以下属性和方法 : 该类具有表示姓名的属性 name 该类具有表示年龄的属性 age 该类具有表示说话行为的方法 speak, 并且用于输出学生的姓名和年龄 1) 使用 class 关键字定义一个表示学生类型的类, 类名为 Student

More information

Microsoft Word - Hibernate与Struts2和Spring组合指导.doc

Microsoft Word - Hibernate与Struts2和Spring组合指导.doc 1.1 组合 Hibernate 与 Spring 1. 在 Eclipse 中, 新建一个 Web project 2. 给该项目增加 Hibernate 开发能力, 增加 Hibernate 相关类库到当前项目的 Build Path, 同时也提供了 hibernate.cfg.xml 这个配置文件 3. 给该项目增加 Spring 开发能力, 增加 spring 相关类库到当前项目的 Build

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

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

停止混流接口 请注意 : 该功能需要联系 ZEGO 技术支持开通 1 接口调用说明 http 请求方式 : POST/FORM, 需使用 https 正式环境地址 access_token=access_token (http

停止混流接口 请注意 : 该功能需要联系 ZEGO 技术支持开通 1 接口调用说明 http 请求方式 : POST/FORM, 需使用 https 正式环境地址   access_token=access_token (http 停止混流接口 请注意 : 该功能需要联系 ZEGO 技术支持开通 1 接口调用说明 http 请求方式 : POST/FORM, 需使用 https 正式环境地址 https://webapi.zego.im/cgi/stop-mix? access_token=access_token (https://webapi.zego.im/cgi/stop-mix? access_token=access_token)

More information

AVEVA PMLNet Guide

AVEVA PMLNet Guide AVEVA PMLNet Guide eryar@163.com Abstract. AVEVA PMLNet allows you to instantitate and invoke methods on.net objects from PML proxy objects. The PML proxy objects behave just like any other PML object.

More information

01_Service

01_Service 移动平台应用软件开发 Service 主讲 : 张齐勋 zhangqx@ss.pku.edu.cn 移动平台应用软件开发 课程建设小组 北京大学 二零一七年 什么是 Service 与 Activity 一样, 同属 Android 基本组件 后台运行, 不与用户交互, 没有可视化界面 最常见的 Service 如 : 在后台播放歌曲 后台执行文件的下载 同样需在 AndroidManifest.xml

More information

Microsoft PowerPoint - plan08.ppt

Microsoft PowerPoint - plan08.ppt 程 序 设 计 语 言 原 理 Principle of Programming Languages 裘 宗 燕 北 京 大 学 数 学 学 院 2012.2~2012.6 8. 面 向 对 象 为 什 么 需 要 面 向 对 象? OO 语 言 的 发 展 面 向 对 象 的 基 本 概 念 封 装 和 继 承 初 始 化 和 终 结 处 理 动 态 方 法 约 束 多 重 继 承 总 结 2012

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

個 人 的 手, 拉 著 瞎 子 的 手 把 他 帶 往 村 外 的 時 候, 對 於 瞎 子 來 講, 那 個 人 的 手 和 耶 穌 的 手 有 沒 有 區 別? 沒 有! 為 什 麼 沒 有 區 別? 因 為 對 於 一 個 瞎 子 來 說, 手 和 耳 朵 就 是 他 接 觸 世 界, 瞭

個 人 的 手, 拉 著 瞎 子 的 手 把 他 帶 往 村 外 的 時 候, 對 於 瞎 子 來 講, 那 個 人 的 手 和 耶 穌 的 手 有 沒 有 區 別? 沒 有! 為 什 麼 沒 有 區 別? 因 為 對 於 一 個 瞎 子 來 說, 手 和 耳 朵 就 是 他 接 觸 世 界, 瞭 課 目 : 講 道 法 學 生 : 楊 建 偉 老 師 : 汪 院 長 時 間 :2009 年 8 月 1 日 靈 命 三 階 ( 可 8:22-26) 在 四 部 福 音 書 中, 這 是 一 段 很 特 別 的 記 載 特 別 在 什 麼 地 方 呢? 是 不 是 特 別 在 耶 穌 基 督 對 一 個 病 人 的 醫 治? 不, 在 耶 穌 三 年 半 的 服 侍 當 中, 曾 經 醫 治 數

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

RunPC2_.doc

RunPC2_.doc PowerBuilder 8 (5) PowerBuilder Client/Server Jaguar Server Jaguar Server Connection Cache Thin Client Internet Connection Pooling EAServer Connection Cache Connection Cache Connection Cache Connection

More information

// HDevelopTemplateWPF projects located under %HALCONEXAMPLES%\c# using System; using HalconDotNet; public partial class HDevelopExport public HTuple

// HDevelopTemplateWPF projects located under %HALCONEXAMPLES%\c# using System; using HalconDotNet; public partial class HDevelopExport public HTuple halcon 与 C# 混合编程之 Halcon 代码调用 写在前面 完成 halcon 与 C# 混合编程的环境配置后, 进行界面布局设计构思每一个按钮所需要实现 的功能, 将 Halcon 导出的代码复制至相应的 C# 模块下即可 halcon 源程序 : dev_open_window(0, 0, 512, 512, 'black', WindowHandle) read_image (Image,

More information

Microsoft Word - Learn Objective-C.doc

Microsoft Word - Learn Objective-C.doc Learn Objective C http://cocoadevcentral.com/d/learn_objectivec/ Objective C Objective C Mac C Objective CC C Scott Stevenson [object method]; [object methodwithinput:input]; output = [object methodwithoutput];

More information

1 Framework.NET Framework Microsoft Windows.NET Framework.NET Framework NOTE.NET NET Framework.NET Framework 2.0 ( 3 ).NET Framework 2.0.NET F

1 Framework.NET Framework Microsoft Windows.NET Framework.NET Framework NOTE.NET NET Framework.NET Framework 2.0 ( 3 ).NET Framework 2.0.NET F 1 Framework.NET Framework Microsoft Windows.NET Framework.NET Framework NOTE.NET 2.0 2.0.NET Framework.NET Framework 2.0 ( 3).NET Framework 2.0.NET Framework ( System ) o o o o o o Boxing UnBoxing() o

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

在Spring中使用Kafka:Producer篇

在Spring中使用Kafka:Producer篇 在某些情况下, 我们可能会在 Spring 中将一些 WEB 上的信息发送到 Kafka 中, 这时候我们就需要在 Spring 中编写 Producer 相关的代码了 ; 不过高兴的是,Spring 本身提供了操作 Kafka 的相关类库, 我们可以直接通过 xml 文件配置然后直接在后端的代码中使用 Kafka, 非常地方便 本文将介绍如果在 Spring 中将消息发送到 Kafka 在这之前,

More information

关于罗斯福时代新政 宪法革命 的几点浅见 韩 铁 美国宪法的若干重要法理原则及其运用在富兰克林 罗斯福总统任内 发生了巨大变化 史称新政 宪法革命 不过 这种变化并不是在所谓 年最高法院的 及时转向 中一锤定音的 最高法院在正当程序 商业权 公众福利条款上的态度及其变化充分说明 新政宪法革命无论是从当时还是其后的发展来看都有它的连续性 局限性和复杂性 只有认识到了这一点 我们对新政宪法革命乃至于整个新政的历史评价才会比较准确

More information

1.JasperReport ireport JasperReport ireport JDK JDK JDK JDK ant ant...6

1.JasperReport ireport JasperReport ireport JDK JDK JDK JDK ant ant...6 www.brainysoft.net 1.JasperReport ireport...4 1.1 JasperReport...4 1.2 ireport...4 2....4 2.1 JDK...4 2.1.1 JDK...4 2.1.2 JDK...5 2.1.3 JDK...5 2.2 ant...6 2.2.1 ant...6 2.2.2 ant...6 2.3 JasperReport...7

More information