<4D F736F F D204A617661B3CCD0F2C9E8BCC6D3EBCAB5BCF9BDCCB3CCA3A8B5DA32B0E6A3A920B5DA35D5C22E646F63>

Size: px
Start display at page:

Download "<4D F736F F D204A617661B3CCD0F2C9E8BCC6D3EBCAB5BCF9BDCCB3CCA3A8B5DA32B0E6A3A920B5DA35D5C22E646F63>"

Transcription

1 第 5 章 类类和对象和对象 教学目标 : 掌握类的构造方法的定义 作用, 以及如何实现类的构造方法 掌握如何创建类对象 如何使用类对象 掌握静态成员和实例成员的使用方法, 以及二者之间的区别 掌握类成员的访问权限的设置方法以及使用原则 教学重点 : 本章首先要求读者掌握对象的定义和引用的方法, 在此基础上深入理解静态成员和实例成员的定义及其应用 方法重载及其作用, 类的封装和访问控制权限 5.1 对象的定义和引用 从程序设计角度来看, 可以把类看成一个数据类型, 这种数据类型就是视频讲解对象类型, 简称为类 定义一个对象变量和定义基本数据类型变量的格式是一样的, 假设以前述定义的 Cust 类为例,Cust 就是对象类型, 就像 int 一样, 现在来定义 Cust 对象类型变量, 如有定义 : Cust mycust;, 则 mycust 就是 Cust 类的对象变量 但对象类型和基本数据类型有着本质上的区别, 声明对象变量之后, 还不能使用对象, 必须先用操作符 new 创建对象实体, 之后才能使用对象 new 关键字的作用有以下几点 : (1) 为对象分配内存空间 (2) 调用类的构造方法 (3) 为对象返回一个引用 构造方法 构造方法是 Java 的一个重要概念 可以设想若每次创建一个类的实例都去初始化它的所有变量是很烦琐的 如果一个对象在被创建时就完成了所有的初始化工作, 将是简单和简洁的 因此,Java 在类里提供了一个特殊的成员方法, 叫做构造方法 (Constructor) 构造方法必须以类名作为方法的名称, 且不返回任何值, 也就是说, 构造方法是以类名为名称的特殊方法 例 5-1 定义 银行账户 类的构造方法, 实现对银行账户属性变量的赋值操作 // 文件名 :Cust.java Cust(String newname, int newid, String newpwd, int newmoney){ name = newname; ID = newid; PWD = newpwd; money = newmoney;

2 Java 程序设计与实践教程 ( 第 2 版 ) 构造方法的作用是确保对象在使用之前经过正确的初始化过程 当用户实例化一个对象时, 此对象的构造方法被调用, 它将初始化一个对象的内部状态 84 知识提示构造方法没有任何返回类型, 即使是 void 类型也没有 用 new 操作符创建一个实例后, 就会得到一个可用的对象, 然后用户才能在这个对象上执行其他操作 也就是说, 对象在被实例化之前是不能被使用的 在 Java 类中, 最少要有一个构造方法 类的构造方法可以显式定义, 也可以隐式定义 显式定义的意思是说在类中已经写好了构造方法的代码 ; 隐式定义是指如果在一个类中没有定义构造方法, 那么系统在解释时会分配一个默认的构造方法, 这个构造方法只是一个空壳子, 没有参数, 也没有代码, 类的所有属性系统将根据其数据类型赋默认值 所以说类的构造方法是必需的, 但其代码可以不编写 总之, 如果在类中已经实现了构造方法, 系统不会分配构造方法 ; 如果没有实现, 系统就会分配 系统使用默认的构造方法来初始化对象时, 会将类中的变量自动初始化为该类型的默认值 例如, 整型初始化为 0, 浮点型初始化为 0.0, 字符型初始化为 '\u0000', 逻辑型初始化为 false, 类对象初始化为 null 等 在一个类中可以存在多个构造方法, 这些构造方法都采用相同的名字 只是形式参数不同 Java 语言可根据构造对象时的参数个数及参数类型来判断调用哪个构造方法 知识提示构造方法是一个特殊的方法, 其具有以下特点 : (1) 构造方法必须与类同名 (2) 构造方法没有返回类型, 也不能定义为 void (3) 构造方法的主要作用是完成对象的初始化工作, 它能够把定义对象时的参数传给 对象的成员 (4) 构造方法不能由编程人员调用, 而由系统调用 (5) 一个类可以定义多个构造方法, 即构造方法可以重载 如果没有定义构造方法, 则编译系统会自动插入一个无参数的默认构造方法, 这个默认构造方法没有任何代码 对象的创建 为了在程序中使用对象, 首先要声明和创建一个对象, 然后给它发送消息, 即调用它的方法 前面定义的类 Cust 仅提供该类的类型定义, 定义好类之后, 可以在声明中将其用作一种类型使用 例如 : Cust mycust; 其中, 类名 Cust 是一个类型名称,myCust 为该类型的变量, 我们称之为对象变量或对象引用 但执行这条语句时, 系统没有调用任何构造方法, 这是因为上述的语句并没有生成对象, 生成的只是变量 mycust, 其默认值为 null 这个变量可以用来存储一个已经生成的 Cust 对象的引用, 即 Cust 实例对象的地址 生成对象可以使用 new 操作符, 用其初始化对象 例如 : mycust = new Cust("Tom",100,"12345",10000); 下面两种创建对象的方法是等效的 Cust mycust ;

3 mycust = new Cust("Tom",100,"12345",10000); 等效于 : Cust mycust = new Cust("Tom",100,"12345",10000); 当系统执行上述语句时,new 操作符将创建一个 Cust 类型的对象, 即给这个 Cust 对象分配空间, 并调用类 Cust 的构造方法, 将参数传给对象的变量 name ID PWD 和 money, 然后将此对象的内存首地址返回给 mycust, 这样就创建了对象 mycust 所以创建一个类的对象时, 对象名本身代表的实际上是一个引用地址, 通过它可以操作管理对象所拥有的内容 对象的内存模型和对象的赋值过程如图 5-1 所示 Cust mycust; mycust = new Cust("Tom",100,"12345",10000); 0x0012ff70 Tom name mycust 0x0012ff ID PWD money 图 5-1 对象的内存模型和对象的赋值示意图 注意 : 对象变量声明与对象创建的不同, 例如 : Cust mycust; 此语句执行后, 系统并未创建 Cust 对象, 而只是分配了一个能存放 Cust 对象地址 ( 存储位置 ) 的变量 mycust 只有使用 new 操作符创建一个对象后,JVM 才会给该对象分配空间, 将该地址空间的起始地址写入对象变量 引用类型变量没有值时, 我们称之为 空引用, 当变量 mycust 存储了一个对象的地址时, 我们说 变量指向一个对象 或 变量引用一个对象 类 引用变量和对象之间的关系如图 5-2 所示 类 声明 创建 引用变量 引用 对象 图 5-2 类 引用和对象的关系 类作为同一类对象的模板, 使用 new 操作符及其后面跟随的构造方法的调用, 可以生成多个不同的对象, 这些对象将被分配不同的内存空间 因此, 尽管这些对象的变量可能有相同的值, 但内存地址不同, 是不同的对象 如果一个对象变量没有被初始化, 则该对象变量为 null, 表示不指向任何内存地址的引 85 第 5 章 类和对象

4 Java 程序设计与实践教程 ( 第 2 版 ) 用 如果一个对象变量赋给另一个对象变量, 则两个对象变量的引用地址相同, 它们实际指向同一个对象, 只是引用对象的变量具有不同的名称 对象的使用 当创建了一个对象之后, 这个对象就拥有所属类的成员变量 ( 实例变量 ) 和方法, 就可以引用该对象的成员变量, 调用其成员方法 在类的作用域中, 一个类中声明的成员变量和方法可由类中的所有方法访问, 并可用它的名称进行引用 在类的作用域外部, 类中声明的成员变量和方法的存取必须通过该类或该类的对象和点操作符 ( 称为类成员存取操作符 ) 来存取, 在类的外部调用成员变量和成员方法的语法格式如下 : 对象名. 成员变量名 ; 对象名. 方法名 ( 形参列表 ); 例如 : Cust mycust = new Cust("Tom",100,"11111",10000); mycust.setmoney(5000); 知识提示在调用方法时, 即使没有参数, 圆括号也不能省略 如果有参数, 那么每个参数必须有确定的值 方法名称后括号中的参数称为 实际参数, 简称 实参 对象的销毁 通过 new 操作符实例化对象时, 系统为对象分配所需的存储空间, 存放其成员属性的值 但内存空间是有限的, 不能存放无限多的对象 为此,Java 提供了资源回收机制, 自动销毁无用的对象, 收回其所占用的空间 一般情况下, 用户不需要专门设计释放对象的方法 但如果需要主动释放对象, 或在释放对象时需要执行特定的操作, 例如, 编程者的类对象使用的资源是操作系统提供的一些图形 字体等非 Java 语言环境的资源时, 则在类中可以定义 finalize() 方法 当系统销毁对象时, 将自动执行 finalize() 方法 对象也可以调用 finalize() 方法来销毁自己 finalize() 方法没有参数, 也没有返回值 一个类只能有一个 finalize() 方法, 其方法定义形式如下 : protected void finalize() { 方法体 ; 5.2 案例分析 : 银行账户对象的创建 1. 案例描述视频讲解建立一个银行账户类, 要求能够存放用户的账号 户名 密码和账户余额等个人信息, 并包含存款 取款 查询余额和修改账户密码等操作, 并用此类创建对象, 对象的账号为 100, 户名为 Tom, 密码为 11111, 账户余额为 10000

5 2. 案例分析建立银行账户类 Cust 之后, 通过 new 操作符调用类的构造方法, 将各项成员属性信息传给对象, 并在主方法中调用类的成员方法 3. 案例实现本例的代码如下 : // 文件名 :MainDemo.java class Cust { String name; int ID; String PWD; int money; Cust(String newname,int newid,string newpwd,int newmoney){ name = newname; ID = newid; PWD = newpwd; money = newmoney; void getmoney(int getmoney){ money = money - getmoney; void setmoney(int savemoney){ money = money + savemoney; void search(){ System.out.println(" 户名 :"+name); System.out.println(" 账号 :"+ID); System.out.println(" 账户余额 :"+money); void changepwd(string newpwd){ PWD = newpwd; public class MainDemo{ public static void main(string[] args){ Cust mycust = new Cust("Tom",100,"11111",10000); mycust.setmoney(5000); mycust.getmoney(3000); mycust.changepwd("tom"); mycust.search(); 4. 归纳与提高对于创建的类, 主要是通过创建该类的对象来访问其成员属性或成员方法 创建对象主要通过 new 操作符完成, 当执行 new 操作时, 系统会根据类名后的参数类型及个数来确定所调用的构造方法 5.3 静态成员与实例成员 Java 的类中可以包含两种成员 : 实例成员和静态成员 简单来说, 类是一种类型而不是具体的对象, 一般在类中定义的成员是每个由此类产生的对象都拥有的, 因此可以称之为实例成员或对象成员 只有创建了对象之后, 才能通过对 87 第 5 章 类和对象

6 Java 程序设计与实践教程 ( 第 2 版 ) 88 象访问实例成员变量 调用实例成员方法 如果需要让类的所有对象在类的范围内共享某个成员, 而这个成员不属于任何由此类产生的对象, 那么它是属于整个类的, 这种成员称为静态成员或类成员 例如,Math 类中的 pow() 方法就是一个静态方法 静态方法不向对象施加任何操作 我们用 Math.pow(x,y) 调用 Math 类的 pow 方法计算幂 x y, 它并不使用任何一个 Math 对象来执行此任务, 也没对任何对象施加操作 静态属性与实例属性 用 static 修饰符声明的成员属性为静态属性 一个静态属性只标识一个存储位置 无论创建了多少个类实例, 静态属性永远都在同一个存储位置存放其值, 静态属性是被共享的 因此, 当某个对象修改了静态属性的值之后, 所有对象都将使用修改的静态属性值 没有 static 修饰的属性为实例属性 每个对象分别包含一组该类的所有实例属性 创建类的对象时, 都会为该对象的属性创建新的存储位置, 也就是说, 类的每个对象的实例属性的存储位置是不相同的 因此修改一个对象的实例属性值, 对另一个对象的该实例属性的值没有影响 例如, 在前述的 Cust 类中, 增加类的成员属性 bankname, 表示账户所属的银行, 由于所有账户都是同一个银行, 它不属于某个单独账户, 因此, 应将其定义为静态属性, 还可以给每个 Cust 类添加一个流水编号和账户总编号, 并将账户总编号定义为静态属性 当创建一个 Cust 对象时, 按创建 Cust 对象的顺序自动给该对象的账户编号设置一个值 class Cust { static String bankname=" 中国农业银行 "; int selfnum=0; static int allnum=0; Cust(String newname,int newid,string newpwd,int newmoney) { allnum++; selfnum=allnum; 静态方法与实例方法 静态方法是不向调用它的对象施加操作的方法, 因为静态方法并不操作调用它的对象, 所以不能用静态方法来访问实例属性, 使用 类名. 方法名 来调用静态方法, 尽管如此, 我们通过对象来调用静态方法是合法的, 不会发生错误 由于静态方法计算或操作的结果和调用它的任何对象都没有关系, 所以用对象调用静态方法很容易让人迷惑 因此要求使用 类名. 方法名 来调用静态方法 在以下两种情况下使用静态方法 : (1) 该方法不需要访问对象的状态, 其所需的参数都通过类的显示参数提供 ( 如 Math.pow() 方法 ) (2) 该方法只需要访问类的静态属性 静态成员与实例成员的特征 类的成员或者是静态成员, 或者是实例成员 一般来说, 将静态成员看作属于类, 而将

7 实例成员看作属于对象 ( 类的实例 ) 1. 静态成员的特征当成员变量或成员方法包含 static 修饰符时, 即被声明为静态成员 静态成员具有下列特征 : (1) 当以 E.M 形式引用静态成员时,E 必须是成员 M 的类型 (2) 一个静态属性只标识一个存储位置 无论创建了多少个类的实例, 永远都只有静态属性的一个副本 (3) 静态方法不在某个特定对象上操作, 在这样的方法中引用 this 是错误的 2. 实例成员的特征当成员属性 成员方法 构造方法的声明中不包含 static 修饰符时, 声明为实例成员, 实例成员也可称为非静态成员 实例成员具有下列特征 : (1) 当以 E.M 形式引用实例成员时,E 是成员 M 的类型的对象 (2) 类的每个对象分别包含一组该类的所有实例属性 类的每个对象都为每个实例属性建立一个副本 也就是说, 类的每个对象的实例属性的存储位置是不相同的 (3) 实例方法在类的给定对象上操作, 此对象可以作为 this 访问 知识提示因为静态方法并不操作对象, 所以不能用静态方法来访问实例属性, 但静态方法可以访问自身类的静态属性 静态成员与实例成员归纳如下 : (1) 静态方法可以访问静态成员变量, 不可以访问实例成员变量 (2) 实例方法可以访问静态成员变量, 也可以访问实例成员变量 为了进一步明确静态方法与实例方法的区别, 现举例说明 例 5-2 静态方法与实例方法的区别 // 文件名 :StaticDemo.java public class StaticDemo { static double pi=3.14; double pix=3.14; double getarea(){ return pi*3*3; static double getarea1(){ return pi*3*3; double getarea2(){ return pix*3*3; //static double getarea3(){ //return pix*3*3; // // 静态变量, 类变量 // 实例变量, 对象变量 // 实例方法 // 类变量, 实例方法能用类变量 // 类方法能用类变量 // 实例方法能用实例变量 // 类方法不能用实例变量 例 5-3 静态成员的加法运算 // 文件名 :HasStatic.java public class HasStatic{ private static int x = 100; public static void main(string args[]){ HasStatic hs1 = new HasStatic(); HasStatic hs2 = new HasStatic(); hs1.x++; 89 第 5 章类和对象

8 90 Java 程序设计与实践教程 ( 第 2 版 ) hs2.x++; hs1.x++; System.out.println("x="+x); 程序的运行结果如下 : x= 关键字 this 的使用 视频讲解 每个对象都有一个名为 this 的引用, 它指向当前对象本身, 主要有如下 4 个方面的应用 : (1)this 调用本类中的属性, 也就是类中的成员变量 通过 this 引用成员变量的格式如下 : this. 成员变量名 ; 当成员方法中没有与成员变量同名的参数时,this 可以省略 但当成员方法中存在与成员变量同名的参数时, 引用成员变量其名前的 this 不能省略, 因为成员方法中默认的是引用方法中的参数, 而不是成员变量 例如, 在前述的方法 setmoney 中, 根据其参数名字的不同, 可以有两种写法 // 方法一 : void setmoney(int savemoney) // 成员方法中变量名与成员变量名不同 { money = money + savemoney; // 方法二 : void setmoney(int money) // 成员方法中变量名与成员变量名相同 { this.money = this.money + money; (2)this 调用本类中的其他方法 通过 this 调用成员方法的格式如下 : this. 成员方法名 ( 参数表 ); 其中, 成员方法名前的 this 可以省略 (3)this 调用本类中的其他构造方法 在构造方法中, 可以通过 this 调用本类中具有不同参数表的构造方法, 其调用的格式如下 : this( 参数表 ); 例 5-4 为 Cust 类编写两个构造方法 : 一个构造方法为无参构造方法, 利用 this 关键字调用有参构造方法 ; 另一个为有参构造方法, 参数分别为户名 账号 密码及余额 Cust(){ this("tom",100,"12345",10000); Cust(String newname,int newid,string newpwd,int newmoney){ name = newname; ID = newid; PWD = newpwd;

9 money = newmoney; 在构造方法中使 this 关键字表示调用类中的构造方法 Java 编译器会根据所传递的参数数量的不同, 来判断该调用哪个构造方法 不过如果要使用这种方式来调用构造方法, 有一个语法上的限制 一般来说, 利用 this 关键字来调用构造方法, 只能在无参数构造方法的第一句使用 this 调用有参数的构造方法 ; 否则编译的时候就会提示错误信息 (4) 返回对象的值 在代码中, 可以使用 return this 返回某个类的引用 此时这个 this 关键字就代表类的名称 如在上面这个 Cust 类中,return this 的含义就是 return Cust 可见,this 关键字除了可以引用变量或者成员方法之外, 还可以作为类的返回值 5.4 方法的重载 成员方法的重载 每一成员方法都有其签名, 方法的签名由方法的名称及它的形参的数量 每个形参的类型组成 具体来说, 方法签名不包含返回类型 在类中如果声明有多个同名的方法但它们的签名不同, 则称为方法的重载 当方法对不同数据类型进行操作时, 方法的重载非常有用, 因为方法的重载提供了对可用数据类型的选择, 从而使方法的使用更为容易 构造方法的重载 类定义中含有两个以上参数个数或类型不同的构造方法时, 称为构造方法重载 构造方法实际上是对对象进行实例化时调用的方法 如希望创建一个可以以多种方式构造对象的类, 就需要重载构造方法 和一般的方法重载一样, 重载的构造方法具有不同个数或不同类型的参数, 编译器就可以根据这一点判断出用 new 关键字产生对象时, 该调用哪个构造方法 例 5-5 重载 Cust 类的构造方法 : 一个为无参构造方法, 实现成员变量的初始化 ; 另一个为有参构造方法, 实现形参到成员变量的赋值 Cust(){ name = ""; ID = 0; PWD = ""; money = 0; Cust(String newname,int newid,string newpwd,int newmoney){ name = newname; ID = newid; PWD = newpwd; money = newmoney; 在创建对象时, 可以根据需要用不同的方式创建对象, 对对象完成不同的初始化操作, 例如执行如下的两条语句 : 91 第 5 章 类和对象

10 Java 程序设计与实践教程 ( 第 2 版 ) Cust st1 = new Cust("Tom",100,"11111",10000); Cust st2 = new Cust(); 92 此时, 系统将创建对象 st1 st2, 但对象 st1 是通过参数对其成员属性进行了初始化, 而对象 st2 则通过无参构造方法的调用, 将其成员属性初始化为各类型的默认值 5.5 案例分析 : 银行账户类构造方法的重载 1. 案例描述建立一个银行账户类, 要求能够存放用户的账号 户名 密码 账户余额 账号流水号等个人信息, 以及所在银行名称 总账户数等公共信息, 功能方面要包含存款 取款 查询余额 修改账户密码等操作, 要求采用不同的构造方法来构造实例对象 2. 案例分析根据案例描述中的信息, 分别创建类的成员属性和成员方法, 对构造方法进行重载 对此案例可以设计一个无参构造方法, 以对创建的银行账户对象的各个成员属性初始化 ; 另一个为有参构造方法, 以实现将参数赋值给对象成员属性 3. 案例实现本例的代码如下 : // 文件名 :CustDemo1.java class Cust { String name; int ID; String PWD; int money; static String bankname=" 中国农业银行 "; int selfnum=0; static int allnum=0; Cust(){ name = ""; ID = 0; PWD = ""; money = 0; allnum++; selfnum=allnum; Cust(String newname,int newid,string newpwd,int newmoney){ name = newname; ID = newid; PWD = newpwd; money = newmoney; allnum++; selfnum=allnum; void getmoney(int getmoney){ money = money - getmoney; void setmoney(int savemoney){ money = money + savemoney; void search(){ System.out.println(" 所属银行 :"+Cust.bankName); System.out.println(" 您是本银行的 "+allnum+" 个顾客中的第 "+

11 selfnum+" 个顾客 "); System.out.println(" 户名 :"+name); System.out.println(" 账号 :"+ID); System.out.println(" 账户余额 :"+money); void changepwd(string newpwd){ PWD = newpwd; void setinfo(string newname,int newid,string newpwd,int newmoney){ name = newname; ID = newid; PWD = newpwd; money = newmoney; public class CustDemo1 { public static void main(string[] args){ Cust st1 = new Cust("Tom",100,"11111",10000); Cust st2 = new Cust(); st1.setmoney(5000); st1.getmoney(3000); st1.changepwd("tom"); st1.search(); st2.setinfo("jerry", 200, "22222", 10000); st2.setmoney(10000); st2.getmoney(5000); st2.changepwd("jerry"); st2.search(); 4. 归纳与提高在 Java 中, 每个类至少需要一个构造方法 ( 可以有多个 ), 它用于构造类的对象 在 Java 中构造方法必须与类名相同 构造方法可以不带有参数, 也可以带有参数 不带有参数的构造方法被称为无参构造方法 如果我们不给类提供构造方法, 那么编译器会自动提供一个无参构造方法 换句话说, 一个类至少有一个构造方法, 而且默认程序员可以不写的构造方法, 但是最好的习惯是加上默认构造方法 当构造方法的形参和成员变量同名时, 成员变量一定要加上 this 强调当前对象, 如果没有, 并没有对成员变量赋值, 只是形参的赋值运算而已, 输出的成员变量也只是系统赋予的默认值为 0, 所以构造方法中的初始化都要加上 this 强调是当前对象 类的封装 5.6 类的封装和访问控制 封装性是面向对象的核心特征之一, 它提供了一种信息隐藏技术 类的封装性的含义是将数据和对数据的操作组合起来构成类, 类是一个不可分割的独立单位 类中既要提供与外部联系的接口, 同时又要尽可能隐藏类的实现细节 封装性为软件提供了一种模块化的设计机制, 设计者提供标准化的类模块, 使用者根据实际需求来选择所需要的模块, 通过组装模块实现大型软件系统 类和对象 93 第 5 章

12 Java 程序设计与实践教程 ( 第 2 版 ) 94 类的设计者和使用者考虑问题的角度不同, 设计者需要考虑如何定义类中的成员变量和方法, 如何设置其访问权限等问题 ; 而类的使用者只需要知道有哪些类可以选择, 每个类有哪些功能, 每个类中有哪些可以访问的成员变量和成员方法等, 而不需要了解其实现细节 访问控制 按照类的封装性原则, 类的设计者既要提供类与外部的联系方式, 又要尽可能地隐藏类的实现细节 这就要求设计者应根据实际需要, 为类和类中的成员变量和成员方法分别设置合理的访问权限 Java 为类中的成员变量和成员方法设置了 4 种访问权限, 为类本身设置了 2 种访问权限 1. 类成员的访问权限 Java 提供的 4 种访问权限分别为 :public( 公有 ) protected( 保护 ) 默认和 private( 私有 ) 具体含义如下: 1)public 被 public 修饰的成员变量和成员方法可以在所有的类中被访问 所谓在某类中访问某成员变量, 是指在该类的方法中给该成员变量赋值 输出其值 在表达式中应用其值等 ; 所谓在某类中访问成员方法, 是指在该类的方法中调用该成员方法 因此在所有类的方法中都可以使用被 public 修饰的成员变量, 调用被 public 修饰的成员方法 2)protected 被 protected 修饰的成员变量和成员方法可以在声明它们的类中被访问, 或在该类的子类中被访问, 也可以被与该类位于同一个包中的类访问, 但不能被其他包中的非子类访问 ( 子类和包的知识详见第 6 章 ) 3) 默认默认是指不使用任何权限修饰符 被默认修饰的成员变量和成员方法可以被声明它们的类访问, 也可以被与该类在同一包中的类访问, 但不能被位于其他包中的类访问 默认权限以包为界划分访问权限的范围, 使成员可以被与其所属的类位于同一包中的类访问, 而不能被该包之外的类访问 4)private 被 private 修饰的成员变量和成员方法只能在声明它们的类中被访问, 而不能被其他类, 甚至其子类所访问 被 private 修饰的成员, 其被访问的权限范围最小, 对所有其他类都隐藏信息 对 4 种访问权限修饰符的总结如表 5-1 所示 表 5-1 访问权限 比较项目 public protected 默认 private 本类 本类所在包 - 其他包中的子类 - - 其他包中的非子类 不能用访问权限修饰符修饰成员方法中声明的变量或形式参数, 因为方法中声明的变量 或形式参数的作用域仅限于该方法, 在方法之外是不可见的, 在其他类中更无法访问

13 2. 类的访问权限声明一个类, 可以使用的权限修饰符只有 public 和默认两种, 不能使用 protected 或 private 例 5-6 创建不同的包, 并在包内创建不同的类, 实现不同包间类的访问 在 MyEclipse 某一工程中创建如图 5-3 所示的目录结构, 这里主要创建 lession3 包及 lession3.otherpackage 包, 用来存放非同一目录的类 图 5-3 工程目录结构示意图 在 lession3 包中的主文件 Lession3.java 代码如下 : // 文件名 :Lession3.java package lession3; // 注意, 我们使用了其他 package 的类, 所以需要 import 进来 // 注意 : 路径必须为完整的路径 import lession3.otherpackage.publicclassotherpackage; //public 的类, 可以被任何类在任何地方访问 // 默认权限的类 ( 即没写任何访问描述符的类 ) 只能在当前 package 访问, 不能被其他 package 的类 // 访问 public class Lession3 { public static void main(string[] args) { // 调用同一 package 下的 public 访问权限类 System.out.println (new PublicClassSamePackage().toString()); // 调用同一 package 下的默认访问权限类 System.out.println (new DefaultClassSamePackage().toString()); // 调用不同 package 下的 public 访问权限类 System.out.println (new PublicClassOtherPackage().toString()); // 调用不同 package 下的默认访问权限类 //System.out.println(new DefaultClassOtherPackage().toString()); 在 lession3 包中 PublicClassSamePackage.java 代码如下 : // 文件名 :PublicClassSamePackage.java package lession3; /** * 相同 package 的公开访问权限类 */ public class PublicClassSamePackage { public String tostring() { return " 相同 package 的公开类 "; 在 lession3 包中 DefaultClassSamePackage.java 代码如下 : 95 第 5 章 类和对象

14 Java 程序设计与实践教程 ( 第 2 版 ) 96 // 文件名 :DefaultClassSamePackage.java package lession3; /** * 相同 package 的默认访问权限类 */ public class DefaultClassSamePackage { public String tostring() { return " 相同 package 的默认类 "; 在 lession3.otherpackage 包中 PublicClassOtherPackage.java 代码如下 : // 文件名 :PublicClassOtherPackage.java package lession3.otherpackage; /** * 不同 package 的公开访问权限类 */ public class PublicClassOtherPackage { public String tostring() { return " 不同 package 的公开类 "; 在 lession3.otherpackage 包中 DefaultClassOtherPackage.java 代码如下 : // 文件名 :DefaultClassOtherPackage.java package lession3.otherpackage; /** * 不同 package 的默认访问权限类 */ public class DefaultClassOtherPackage { public String tostring() { return " 不同 package 的默认类 "; 程序的运行结果如下 : 相同 package 的公开类相同 package 的默认类不同 package 的公开类 调用不同包下的默认访问权限类, 如果把 Lession3.java 中的被注释掉的代码恢复, 则会产生编译错误, 如图 5-4 所示 图 5-4 编译错误示意图

15 可见, 一个类如果想直接访问另一个单独的类, 有两种情况 : (1) 和自己在一个包中, 无论其是否为 public (2) 和自己不在一个包中, 且必须为 public 知识提示在一个 Java 源程序文件中, 可以包含多个类, 但只能有一个类使用 public 修饰符, 该类的名字必须与源程序文件的名字相同 另外, 当程序中创建多个类时, 必须运行包含 main() 方法的类, 否则将会出错 5.7 案例分析 : 简单的银行账户管理程序 1. 案例描述建立一个银行账户类, 要求能够存放用户的账号 户名 密码 账户余额 账号的流水号等个人信息, 以及所在银行名称 总账户数等公共信息, 功能方面要包含存款 取款 查询余额 修改账户密码等操作, 要求采用键盘输入数据的方式, 并用不同的构造方法来构造实例对象 2. 案例分析根据案例描述中的信息, 可以设计 Cust 类的无参构造方法和有参构造方法, 在构造方法中主要实现各个成员变量的赋值运算 账户流水号及总账户数的计算 Cust 类中还要实现存款方法 savemoney() 取款方法 getmondy() 查询方法 search() 修改密码方法 changepwd() 获取账号方法 getid() 在主类 Demo 中, 主方法 main() 要实现各操作的选择菜单, 实现基本的账户管理操作 此外, 还可以设计一个 KB 类, 主要实现从键盘输入数据 在 KB 类中有 scan() 方法, 利用 Java 的输入流实现数据输入 在 scan() 方法中用到的 System.in 是 java.lang 包中 System 类预定义的属性, 是 InputStream 抽象类的一个实例变量 InputStream 类是表示字节输入流的所有类的超类,InputStreamReader 是字节流通向字符流的桥梁, 它使用指定的字符集读取字节并将其解码为字符 BufferedReader 类用于从缓冲区中读取内容, 所有的输入字节数据都将放在缓冲区中以提高读取效率 关于输入输出流的具体内容将在第 8 章中给出详细介绍 3. 案例实现本例的代码如下 : // 文件名 :CustDemo2.java import java.io.bufferedreader; import java.io.inputstreamreader; class KB{ public static String scan(){ String str = ""; try { BufferedReader buf = new BufferedReader(new InputStreamReader (System.in)); str = buf.readline(); catch (Exception e){ return str; 97 第 5 章 类和对象

16 Java 程序设计与实践教程 ( 第 2 版 ) 98 class Cust{ private String name; private int ID; private String PWD; private int money; static String bankname=" 中国农业银行 "; private int selfnum=0; static int allnum=0; Cust(String newname,int newid,string newpwd,int newmoney){ name = newname; ID = newid; PWD = newpwd; money = newmoney; allnum++; selfnum=allnum; void getmoney(){ System.out.print(" 请输入要取出的金额 :"); int n = Integer.parseInt(KB.scan()); money = money-n; void savemoney(){ System.out.print(" 请输入要储蓄的金额 :"); int n = Integer.parseInt(KB.scan()); money = money+n; void search(){ System.out.println(" 所属银行 :"+Cust.bankName); System.out.println(" 您是本银行 "+allnum+" 个顾客中的第 "+selfnum+" 个顾客 "); System.out.println(" 户名 :"+name); System.out.println(" 账号 :"+ID); System.out.println(" 账户余额 :"+money); void changepwd(){ System.out.print(" 请输入用户密码 :"); String p=kb.scan(); PWD=p; int getid(){ return ID; public class CustDemo2{ public static void main(string[] args){ Cust st = new Cust("Tom",100,"12345",10000); System.out.print(" 请输入您的 ID:"); int ID = Integer.parseInt(KB.scan()); if(id == st.getid()){ while (true){ System.out.print("1 存款 "); System.out.print("2 取款 "); System.out.print("3 修改密码 "); System.out.print("4 查询 "); System.out.print("5 退出 "); int n=integer.parseint(kb.scan()); switch (n){ case 1: st.savemoney(); break;

17 case 2: st.getmoney(); break; case 3: st.changepwd(); break; case 4: st.search();break; case 5: System.exit(1); else{ System.out.print(" 您输入的 ID 错误!"); 4. 归纳与提高观察上述代码, 发现主程序段中关于用户操作选择的部分使得主方法段显示过于繁杂, 是否可以将此部分功能抽象出来, 形成一个独立的方法呢? 对于案例代码修改如下 : // 文件名 :CustDemo2_2.java import java.io.bufferedreader; import java.io.inputstreamreader; class KB{ // 此部分代码与前述代码段相同 class Cust { // 此部分代码与前述代码段相同 public class CustDemo2_2{ public static void main(string[] args){ Cust st = new Cust("Tom",100,"12345",10000); System.out.print(" 请输入您的 ID:"); int ID = Integer.parseInt(KB.scan()); if(id == st.getid()){ run(id); else{ System.out.print(" 您输入的 ID 错误!"); static void run(cust st){ while (true){ System.out.print("1 存款 "); System.out.print("2 取款 "); System.out.print("3 修改密码 "); System.out.print("4 查询 "); System.out.print("5 退出 "); int n=integer.parseint(kb.scan()); switch (n){ case 1: st.savemoney(); break; case 2: 99 第 5 章 类和对象

18 Java 程序设计与实践教程 ( 第 2 版 ) 100 st.getmoney(); break; case 3: st.changepwd(); break; case 4: st.search();break; case 5: System.exit(1); 在主方法段中抽象出的 run() 方法中具有一个 Cust 类的形参, 说明当有多个 Cust 类的对象时, 对象要作为参数在方法间进行传递, 这使得方法间的关联关系 ( 也可称为耦合度 ) 增强, 这是软件设计过程中应该尽量避免的问题 每一个到银行存取款的顾客都要进行菜单选择, 所以可以把菜单选择看成是 Cust 类对象的一种行为, 因此可以把菜单选择操作的方法 run() 从主方法中提取出来, 放置到 Cust 类中, 作为 Cust 类的成员方法 由于 run() 是 Cust 类的成员方法, 所以不用再将 Cust 类的对象作为参数传递, 而且在主方法中要采用 对象. 方法名 的形式访问方法 修改代码如下 : // 文件名 :CustDemo2_3.java import java.io.bufferedreader; import java.io.inputstreamreader; class KB{ // 此部分代码与前述代码段相同 class Cust { // 此部分代码与前述代码段相同 // 下述代码为菜单操作方法 void run(){ while (true){ System.out.print("1 存款 "); System.out.print("2 取款 "); System.out.print("3 修改密码 "); System.out.print("4 查询 "); System.out.print("5 退出 "); int n=integer.parseint(kb.scan()); switch (n){ case 1: savemoney(); break; case 2: getmoney(); break; case 3: changepwd(); break; case 4: search();break; case 5: System.exit(1);

19 public class CustDemo2_3{ public static void main(string[] args){ Cust st = new Cust("Tom",100,"12345",10000); System.out.print(" 请输入您的 ID:"); int ID = Integer.parseInt(KB.scan()); if(id == st.getid()){ st.run(); else{ System.out.print(" 您输入的 ID 错误!"); 当银行账户数较多时, 不能采用 st1 st2 st3 等变量去存储对象的引用, 可以考虑用对象数组实现 Java 中的数组中既能存储基本数据类型的值, 也能存储对象 对象数组和基本数据类型数组在使用方法上几乎是完全一致的, 唯一的差别在于对象数组容纳的是对象的引用, 而基本数据类型数组容纳的是具体的值 引入对象数组存储 4 个银行账户的信息, 修改代码如下 : // 文件名 :CustDemo2_4.java import java.io.bufferedreader; import java.io.inputstreamreader; class KB{ // 此部分代码与前述代码段相同 class Cust { // 此部分代码与前述代码段相同 public class CustDemo2_4{ public static void main(string[] args){ int i,j=0; Cust st[]=new Cust[4]; st[0]=new Cust("Mike",1000,"111",111); st[1]=new Cust("Bob",2000,"222",222); st[2]=new Cust("cindy",3000,"333",333); st[3]=new Cust("ruby",4000,"444",444); boolean flag=false; // 用于判断是否是合法的账户 while (true){ System.out.println(" 请输入您的 ID:"); int ID=Integer.parseInt(KB.scan()); for ( i=0;i<4;i++){ if (ID==st[i].ID){ flag=true; j=i; if (flag){ st[j].run(); else{ System.out.println(" 您输入的账号不正确, 请重新输入!"); 101 第 5 章类和对象

20 Java 程序设计与实践教程 ( 第 2 版 ) 102 continue; System.out.println(" 是否还有顾客, 没有请按 N"); String str=kb.scan(); if (str.equals("n") str.equals("n")){ break; 在 Java 中, 为了数据的安全性往往不直接改动成员变量的值, 而是通过声明对象来调用对象的 set() get() 方法, 这充分体现出了面向对象的封装特性, 对类的内部数据进行隐藏 Java 程序一般将 A 类的属性修饰符设置为 private, 要想在 B 类中引用该属性, 就可以在 A 类中定义修饰符为 public 的 set() get() 方法以设置和获取 private 型的属性值 读者可以考虑在案例代码中增加 set() get() 方法来设置和获取属性值 5.8 本章小结 本章主要以银行账户的相关内容为主线, 介绍了面向对象的基本概念 构建类的方法 对象的定义及引用方法 静态成员与实例成员的定义方法及区别 方法的重载 类的封装与访问控制等内容 类主要包括属性和方法 : 属性 局部变量成员变量类变量 类 方法 构造方法实例方法类方法 1. 属性 (1) 局部变量 : 只有离定义的局部变量最近的一对 { 中的语句可以使用该变量, 局部变量为方法和语句块的内部变量, 例如 : public static void main(){ int a =0; (2) 成员变量 : 也叫全局变量或实例变量, 位于方法的外部, 是类内部定义的变量, 不一定需要赋初值, 所有的实例方法都可以使用, 例如 : public class Hello{ String str=" 大家好 " ; public static void main(string[] args){ System.out.println(str);

21 (3) 类变量 : 用 static 来声明的可供所有对象共享的变量, 通过 类名. 属性名 调用, 例如 : public class Hello{ static String str=" 大家好 " ; public static void main(string[] args){ System.out.println(Hello.str); 2. 方法 (1) 构造方法 : 构造方法主要对变量初始化, 相当于给变量赋值 使用构造方法应注意以下几点 : 1 构造方法的名字和类的名字要一模一样 2 构造方法无返回值, 也无须写 void 3 使用时用 new 操作符调用, 创建对象 当构造方法同名, 但参数不同时, 称为构造方法的重载 当我们在调用方法的时候, 虚拟机会自动寻找参数相同的方法 不同的参数主要体现在以下几种形式 : 1 参数个数不同 2 参数类型不同 3 参数的顺序不同 (2) 类方法和实例方法的区别 用 static 修饰的方法是类方法, 也称为静态方法, 目前我们接触到的 main() 方法是一个类方法 静态方法只能调用静态成员变量和方法, 一个类的静态方法可以不创建该类的对象而通过 类名. 方法名 的形式进行调用 因为静态方法是属于类的方法, 不属于某个具体对象, 所以静态方法不能访问非静态成员 实例方法也称为非静态方法, 不用 static 修饰, 需要创建类的对象后, 用 对象名. 方法 的方式调用方法 Java 中的访问控制符的作用是说明被声明的内容 ( 类 属性 方法和构造方法 ) 的访问权限 就像发布的文件一样, 在文件中标注机密, 就是说明该文件只可以被某些人阅读 访问控制在面向对象技术中处于很重要的地位, 合理地使用访问控制符, 可以通过降低类和类之间的耦合性 ( 关联性 ) 来降低整个项目的复杂度, 也便于整个项目的开发和维护 具体的实现就是通过访问控制符将类中会被其他类调用的内容开放出来, 而把不希望别人调用的内容隐藏起来, 这样一个类开放的信息变得比较有限, 从而降低了整个项目开放的信息 ; 另外因为不被别人调用的功能被隐藏起来, 在修改类内部隐藏的内容时, 只要最终的功能没有改变, 即使改变功能的实现方式, 项目中其他的类也不需要更改, 这样可以提高代码的可维护性, 便于项目代码的修改 在 4 种访问控制中,public 一般称作公共权限, 其限制最小, 也可以说没有限制 使用 public 修饰的内容可以在其他所有位置访问, 只要能访问到对应的类, 就可以访问到类内部 public 修饰的内容 一般在项目中开放的方法和构造方法使用 public 修饰, 开放给项目使用的类也使用 public 修饰 protected 一般称作继承权限, 使用 protected 修饰的内容可以被同一 103 第 5 章 类和对象

22 Java 程序设计与实践教程 ( 第 2 版 ) 104 个包中的类访问, 也可以被不同包内部的子类访问, 一般用于修饰只开放给子类的属性 方法和构造方法 无访问控制符一般称作包权限, 无访问控制符修饰的内容可以被同一个包中的类访问, 一般用于修饰项目中一个包内部的功能类, 这些类的功能只是辅助其他的类实现, 而为包外部的类提供功能 private 一般称作私有权限, 其限制最大, 类似于文件中的绝密, 使用 private 修饰的内容只能在当前类中访问, 而不能被类外部的任何内容访问, 一般修饰不开放给外部使用的内容, 修改 private 的内容一般对外部的实现没有影响 理论练习题 一 判断题 1.Java 源程序由类定义组成, 每个程序可以定义若干个类, 但只有一个主类 ( ) 2. 即使一个类中未显式定义构造方法, 也会有一个默认的构造方法, 默认的构造方法是无参的, 方法体为空 ( ) 3.Java 语言中的数组元素只能是基本数据类型而不能为对象类型 ( ) 4. 构造方法用于创建类的实例对象, 构造方法名应与类名相同, 返回类型为 void ( ) 5. 可以用 new 来创建一个类的实例, 即 对象 ( ) 6.Java 中类的构造方法只能有一个 ( ) 7. 类变量在内存中只有一个副本, 被该类的所有对象共享 每当创建一个实例, 就会为实例变量分配一次内存, 实例变量可以在内存中有多个副本, 互不影响 ( ) 8. 类中说明的方法可以定义在类体外 ( ) 9. 实例方法中不能引用类变量 ( ) 10. 创建对象时系统将调用适当的构造方法给对象初始化 ( ) 11. 使用运算符 new 创建对象时, 赋给对象的值实际上是一个引用值 ( ) 12. 对象赋值实际上是同一个对象具有两个不同的名字, 它们都有同一个引用值 ( ) 13. 对象可作方法参数, 对象数组不能作方法参数 ( ) 14.class 是定义类的唯一关键字 ( ) 15. 类的 public 类型的成员变量不可以被继承 ( ) 二 填空题 1. 类的修饰符分为 2. 程序中定义类使用的关键字是, 每个类的定义由类头定义 类体定义两部分组成, 其中类体部分包括 和 3.main 方法的声明格式是 4. 创建一个类的对象的运算符是 5.java 源文件中最多只能有一个 类, 其他类的个数不限 6. 类方法不能直接访问其所属类的 变量和 方法, 只可直接访问其所属类的 变量和 方法 7. 类成员的访问控制符有 和默认 4 种 8.protected 类型的类成员可被同一 同一包中的 和不同包中的 的代

23 码访问引用 9. 下面是一个类的定义 : public class { int x, y; Myclass ( int i, ) { x=i; y=j; // 构造方法 10. 下面程序的运行结果是 public class D{ public static void main(string args[]){ int d=21; Dec dec=new Dec( ); dec.decrement(d); System.out.println(d); class Dec{ public void decrement(int decme){ decme = decme 1; 11. 下面程序的运行结果是 public class Q6{ public static void main(string args[ ]){ Holder h=new Holder( ); h.held=100; h.bump(h); System.out.println(h.held); class Holder{ public int held; public void bump(holder theholder){ theholder.held - -; 三 选择题 1. 以下关于 application 的说明, 正确的是 ( ) 1 public class StaticStuff { 2 static int x=15; 3 static { x*=3; 4 public static void main(string args[]) { 5 System.out.println("x="+x); 6 7 static {x/=3; 8 A.3 号行与 7 号行不能通过编译, 因为缺少方法名和返回类型 B.7 号行不能通过编译, 因为只能有一个静态初始化器 105 第 5 章类和对象

24 Java 程序设计与实践教程 ( 第 2 版 ) 106 C. 编译通过, 执行结果为 :x=15 D. 编译通过, 执行结果为 :x=3 2. 类 Text1 定义如下 : public class Test1{ public float amethod(float a, float b){ *** 将以下 ( ) 方法插入行 *** 是不合法的 A.public float amethod(float a,float b,float c){ B.public float amethod(float c,float d){ C.public int amethod(int a,int b){ D.public float amethod(int a,int b,int c){ 3. 以下关于构造方法的描述错误的是 ( ) A. 构造方法的返回类型只能是 void 型 B. 构造方法是类的一种特殊方法, 它的方法名必须与类名相同 C. 构造方法的主要作用是完成对类的对象的初始化工作 D. 一般在创建新对象时, 系统会自动调用构造方法 4. 在 Java 中, 一个类可同时定义许多同名的方法, 这些方法的形式参数个数 类型或顺序各不相同, 传回的值也可以不相同 这种面向对象程序的特性称为 ( ) A. 隐藏 B. 覆盖 C. 重载 D.Java 不支持此特性 5. 假设 A 类有如下定义, 设 a 是 A 类的一个实例, 下列语句调用错误的是 ( ) public class A { int i; static String s; void method1() { static void method2() { A.System.out.println(a.i); B.a.method1(); C.A.method1(); D.A.method2(); 6. 设 x y 为已定义的类名, 下列声明 x 类的对象 x1 的语句中正确的是 ( ) A.static x x1; B.public x x1=new x(int 123); C.y x1; D.x x1=x( ); 7. 已知有下列类的说明, 下列语句正确的是 ( ) public class Test{ private float f = 1.0f; int m = 12; static int n=1; public static void main(string args[ ]){ Test t = new Test( ); A.t.f; B.this.n; C.Test.m; D.Test.f;

25 上机实训题 1. 创建 MyProject3 项目并创建 Person 类, 设置 name sex 及 age 成员域 设置带参构造方法及无参构造方法, 设置 tostring( 该名称可自定义 ) 方法将类的 3 个成员域转化成字符串便于显示输出 创建主类 CreatPerson, 通过 Person 类创建对象, 显示输出该对象的各种属性 2. 创建 MaxArray 类, 并利用该类的对象求一维数组中的最大值 3. 创建 Circle 类并添加静态属性 r( 成员变量 ), 并定义一个常量 PI=3.142, 在类 Circle 中添加两种方法, 分别计算周长和面积 ; 编写主类 CreatCircle, 利用类 Circle 输出 r=2 时圆的周长和面积 107 第 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

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

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

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

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

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

软件工程文档编制

软件工程文档编制 实训抽象类 一 实训目标 掌握抽象类的定义 使用 掌握运行时多态 二 知识点 抽象类的语法格式如下 : 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

模板

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

More information

教案模板4-2

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

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

Microsoft Word - word模板-教师.doc

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

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

Guava学习之Resources

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

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

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

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

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

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

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

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

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

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

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

Microsoft Word - 第2章.doc

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

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++ 程序设计 告别 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

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

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

chp4

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

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

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

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

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

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 類别 欄 (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

第二章 Java 语法基础 实验目的 (1) 常量 变量与数据类型 a. 掌握 Java 的常量 变量声明及使用方法 b. 掌握 Java 各种数据类型的使用 c. 掌握基本的输入输出方法 (2) 运算符与表达式 a. 掌握算术运算 关系运算 逻辑运算, 及优先关系 b. 掌握表达式的使用 (3)

第二章 Java 语法基础 实验目的 (1) 常量 变量与数据类型 a. 掌握 Java 的常量 变量声明及使用方法 b. 掌握 Java 各种数据类型的使用 c. 掌握基本的输入输出方法 (2) 运算符与表达式 a. 掌握算术运算 关系运算 逻辑运算, 及优先关系 b. 掌握表达式的使用 (3) 第二章 Java 语法基础 实验目的 (1) 常量 变量与数据类型 a. 掌握 Java 的常量 变量声明及使用方法 b. 掌握 Java 各种数据类型的使用 c. 掌握基本的输入输出方法 (2) 运算符与表达式 a. 掌握算术运算 关系运算 逻辑运算, 及优先关系 b. 掌握表达式的使用 (3) 常用系统类 a. 基本输入输出类的使用 b. 掌握 Math 类的使用 (4) 类及其方法的使用 a.

More information

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

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

More information

幻灯片 1

幻灯片 1 第三课类和对象 ( 封装 ) 互联网新技术在线教育领航者 1 内容概述 1. 封装的概念 2. 访问控制 3. 栈类的封装 4. 构造与析构 5.myString 构造函数 6. 构造与析构的次序 7. 类文件写法 8. 对象的内存 9.this 指针初探 10. 构造函数初始值列表 11. 拷贝构造和赋值运算符重载 12. 浅拷贝 13. 深拷贝 14. 成员函数内联 15. 友元 16.const

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

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

《大话设计模式》第一章

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

More information

Microsoft Word - JCS5.doc

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

More information

Microsoft Word - 01.DOC

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

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

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

《计算概论》课程 第十九讲  C 程序设计语言应用 计算概论 A 程序设计部分 字符数组与字符串 李戈 北京大学信息科学技术学院软件研究所 lige@sei.pku.edu.cn 字符数组的定义 #include int main() char a[10] = 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j' ; for (int i = 0; i < 10; i++) cout

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

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

拦截器(Interceptor)的学习

拦截器(Interceptor)的学习 二 拦截器 (Interceptor) 的学习 拦截器可以监听程序的一个或所有方法 拦截器对方法调用流提供了细粒度控制 可以在无状态会话 bean 有状态会话 bean 和消息驱动 bean 上使用它们 拦截器可以是同一 bean 类中的方法或是一个外部类 下面介绍如何在 Session Bean 类中使用外部拦截器类 @Interceptors 注释指定一个或多个在外部类中定义的拦截器 下面拦截器

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

Microsoft PowerPoint - 4. 数组和字符串Arrays and Strings.ppt [兼容模式]

Microsoft PowerPoint - 4. 数组和字符串Arrays and Strings.ppt [兼容模式] Arrays and Strings 存储同类型的多个元素 Store multi elements of the same type 数组 (array) 存储固定数目的同类型元素 如整型数组存储的是一组整数, 字符数组存储的是一组字符 数组的大小称为数组的尺度 (dimension). 定义格式 : type arrayname[dimension]; 如声明 4 个元素的整型数组 :intarr[4];

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

设计模式 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

《C语言程序设计》教材习题参考答案

《C语言程序设计》教材习题参考答案 教材名称 : C 语言程序设计 ( 第 1 版 ) 黄保和 江弋编著清华大学出版社 ISBN:978-7-302-13599-9, 红色封面 答案制作时间 :2011 年 2 月 -5 月 一 选择题 1. 设已定义 int a, * p, 下列赋值表达式中正确的是 :C)p=&a 2. 设已定义 int x,*p=&x;, 则下列表达式中错误的是 :B)&*x 3. 若已定义 int a=1,*b=&a;,

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

Microsoft Word - 正文.doc

Microsoft Word - 正文.doc 第 2 章 Java 语言基础 通过本章的实践, 要掌握 Java 中的标识符 关键字 常量, 熟练掌握算术 关 系 逻辑 条件 赋值 位运算符的使用, 掌握简单顺序结构的程序设计 2.1 典型习题解答 2.1 Java 中怎样进行注释? 解答 Java 语言中的注释有 3 种形式 : (1) 单行 : // (2) 多行 : /* */ (3) 文档注释 : /** */ 第三种形式是第二种形式的变形,

More information

Guava学习之CharSequenceReader

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

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

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

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

More information

新版 明解C++入門編

新版 明解C++入門編 511!... 43, 85!=... 42 "... 118 " "... 337 " "... 8, 290 #... 71 #... 413 #define... 128, 236, 413 #endif... 412 #ifndef... 412 #if... 412 #include... 6, 337 #undef... 413 %... 23, 27 %=... 97 &... 243,

More information

Microsoft PowerPoint - 07 派生数据类型

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

More information

ChinaBI企业会员服务- BI企业

ChinaBI企业会员服务- BI企业 商业智能 (BI) 开源工具 Pentaho BisDemo 介绍及操作说明 联系人 : 杜号权苏州百咨信息技术有限公司电话 : 0512-62861389 手机 :18616571230 QQ:37971343 E-mail:du.haoquan@bizintelsolutions.com 权限控制管理 : 权限控制管理包括 : 浏览权限和数据权限 ( 权限部分两个角色 :ceo,usa; 两个用户

More information

第3章 Java语言基础

第3章 Java语言基础 第 3 章 Java 语言基础 第 1/55 页 习题 3 3. 8. 9. 13. 18. 实验 : 1. 实验 4( 实 P11~12) 2. 实验任务 : 1 例 3.1( 教 P30) 2 变量赋值 ( 教 P29) 3 编写两个缓冲区对应同一个输入流对象, 并键盘输入整型 a 和双精度 b, 求和 第 2/55 页 习题 3 3. 实验任务 : 1 实验 5( 实 P12~13) 2 实验

More information

public String getsex() { return ssex; public int getage() { return sage; public int getjava() { return sjava; public static void main(string[] args) {

public String getsex() { return ssex; public int getage() { return sage; public int getjava() { return sjava; public static void main(string[] args) { 第七章类和对象 实验目的 (1) 熟练掌握类 类方法的定义 (2) 明确类与对象的关系掌握关键字 new 的引用 (3) 掌握对象的引用 (4) 掌握构造方法及一般方法的使用 实验范例 例 1:( 类的构造 ) 定义一个表示学生信息的类 Student, 要求如下 :( 有关类的编程 ) (1) 类 Student 的成员变量 : sno 表示学号 ;sname 表示姓名 ;ssex 表示性别 ;sage

More information

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

More information

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

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

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

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

chp6.ppt

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

More information

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

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

More information

Microsoft Word - 第3章.doc

Microsoft Word - 第3章.doc 第 3 章 对象和类 在当今的计算机大型应用软件开发领域, 面向对象技术正在逐步取代面向过程的程序设计技术 本章将介绍面向对象的基本知识和 Java 实现面向对象程序设计的主要工具 类 如果读者缺乏关于面向对象程序设计的背景, 一定要仔细阅读本章 如果读者有 C++ 编程经验, 也要注意二者之间的区别, 毕竟 Java 在类的具体实现上与 C++ 有较大的差别 学习本章面向对象的相关知识, 主要内容有以下几点

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

Generated by Unregistered Batch DOC TO PDF Converter , please register! 浙江大学 C 程序设计及实验 试题卷 学年春季学期考试时间 : 2003 年 6 月 20 日上午 8:3

Generated by Unregistered Batch DOC TO PDF Converter , please register! 浙江大学 C 程序设计及实验 试题卷 学年春季学期考试时间 : 2003 年 6 月 20 日上午 8:3 浙江大学 C 程序设计及实验 试题卷 2002-2003 学年春季学期考试时间 : 2003 年 6 月 20 日上午 8:30-10:30 注意 : 答题内容必须写在答题卷上, 写在本试题卷上无效 一. 单项选择题 ( 每题 1 分, 共 10 分 ) 1. 下列运算符中, 优先级最低的是 A.

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

chp5_1

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

More information

PowerPoint 演示文稿

PowerPoint 演示文稿 The BitCoin Scripting Language 交易实例 交易结构 "result": { "txid": "921a dd24", "hash": "921a dd24", "version": 1, "size": 226, "locktime": 0, "vin": [ ], "vout": [ ], "blockhash": "0000000000000000002c510d

More information

FY.DOC

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

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

第八章类和对象的扩展 实验目的 (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

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

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

Microsoft Word - 第3章.doc

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

More information

没有幻灯片标题

没有幻灯片标题 指针作为函数参数 : 原因 : 1 需要修改一个或多个值,( 用 return 语句不能解决问题 ) 2 执行效率的角度 使用方法 : 在函数原型以及函数首部中需要声明能够接受指针值的形参, 具体的写法为 : 数据类型 * 形参名 如果有多个指针型形参, 则用逗号分隔, 例如 : void swap(int *p1, int *p2) 它说明了形参 p1 p2 是指向整型变量的指针 在函数调用时,

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

<4D F736F F D20B5DA32D5C220C3E6CFF2B6D4CFF3B3CCD0F2C9E8BCC6B3F5B2BD2E646F6378>

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

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

<4D6963726F736F667420506F776572506F696E74202D20332D322E432B2BC3E6CFF2B6D4CFF3B3CCD0F2C9E8BCC6A1AAD6D8D4D8A1A2BCCCB3D0A1A2B6E0CCACBACDBEDBBACF2E707074>

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

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 Word - 第3章.doc

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

More information

雲端 Cloud Computing 技術指南 運算 應用 平台與架構 10/04/15 11:55:46 INFO 10/04/15 11:55:53 INFO 10/04/15 11:55:56 INFO 10/04/15 11:56:05 INFO 10/04/15 11:56:07 INFO

雲端 Cloud Computing 技術指南 運算 應用 平台與架構 10/04/15 11:55:46 INFO 10/04/15 11:55:53 INFO 10/04/15 11:55:56 INFO 10/04/15 11:56:05 INFO 10/04/15 11:56:07 INFO CHAPTER 使用 Hadoop 打造自己的雲 8 8.3 測試 Hadoop 雲端系統 4 Nodes Hadoop Map Reduce Hadoop WordCount 4 Nodes Hadoop Map/Reduce $HADOOP_HOME /home/ hadoop/hadoop-0.20.2 wordcount echo $ mkdir wordcount $ cd wordcount

More information

网C试题(08上).doc

网C试题(08上).doc 学习中心 姓名 学号 西安电子科技大学网络与继续教育学院 高级语言程序设计 (C) 全真试题 ( 闭卷 90 分钟 ) 题号一二三总分 题分 60 20 20 得分 一 单项选择题 ( 每小题 3 分, 共 60 分 ) 1.C 语言程序的基本单位是 A) 程序行 B) 语句 C) 函数 D) 字符 2. 下列四组选项中, 均是不合法的用户标识符的选项是 A)A B)getc C)include D)while

More information

第四章 102 图 4唱16 基于图像渲染的理论基础 三张拍摄图像以及它们投影到球面上生成的球面图像 拼图的圆心是相同的 而拼图是由球面图像上的弧线图像组成的 因此我 们称之为同心球拼图 如图 4唱18 所示 这些拼图中半径最大的是圆 Ck 最小的是圆 C0 设圆 Ck 的半径为 r 虚拟相机水平视域为 θ 有 r R sin θ 2 4畅11 由此可见 构造同心球拼图的过程实际上就是对投影图像中的弧线图像

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