Microsoft Word - 第5章.doc

Size: px
Start display at page:

Download "Microsoft Word - 第5章.doc"

Transcription

1 第 5 章 面向对象编程 除了基本的类和对象,Java 语言的面向对象编程还包括抽象类 接口 内部类及包等高级特性 通过对这些高级特性的支持,Java 语言全面实现了面向对象的编程 本章将进一步深入介绍 Java 语言面向对象编程方面的知识 5.1 类的三大特性 第 4 章介绍了有关类定义的基本知识 面向对象中的类还具有封装 继承与多态的特性, 这也是面向对象编程所具有的重要特点 Java 语言对类的封装 继承及多态均有很好地体现, 下面分别进行介绍 隐藏细节 封装 封装是指隐藏对象的属性及实现细节, 对外仅提供接口可见 封装实现了信息隐藏, 有利于软件复用 这种技术带来的好处是达到了模块化的标准, 从而提高了代码的复用程度 在某种程度上, 封装也大大改善了软件开发的可维护性, 降低了构建复杂软件系统的风险 在 Java 语言中, 对象的属性和方法均可以进行访问控制 使用前面介绍的访问控制修饰符 public private protected 和 default, 可以实现不同程度的信息封装 下面通过一个具体的示例来介绍 Java 语言中封装的实现 示例 5-1 定义一个电视机类 TV, 其代码如下所示 01 public class TV() { private int volume; 类 03 private int color; public int getvolume() { 属性 07 return volume; 方法 11 public void setvolume(int volume) { 12 this.volume = volume; public int getcolor() { TV 音量 volume 颜色 color 查看音量 getvolume() 设置音量 setvolume () 查看颜色 getcolor() 设置颜色 setcolor() 开机 turnon() 关机 turnoff()

2 第 5 章面向对象编程 17 return color; public void setcolor(int color) { 22 this.color = color; public void turnon() { 27 turnon_impl(); // 调用内部开机实现 public void turnoff() { 32 turnoff_impl(); // 调用内部关机实现 // 开机内部实现 36 private void turnon_impl() { 37 // // 电视机内部部件实现开机 // 关机内部实现 42 private void turnoff_impl() { 43 // // 电视机内部部件实现关机 分析 : 上面代码定义了一个电视机类 TV, 包含音量 volume 和颜色 color 两个属性 还定义了一些方法, 包括音量 颜色的查看 设置方法, 电视机的开 关方法及开 关的内部实现方法 从类的属性可以看到, 音量 volume 和颜色 color 属性均定义成 private 私有类型, 只能通过相关方法对其值进行操作 类 TV 对其属性 volume 和 color 实现了封装, 只能通过外部的具体动作影响其值 在某些情况下, 比如想限制用户读取其值, 只要将对应的 get 方法也设置成 private 即可 类 TV 的方法中开机 关机的内部实现也被封装成 private 方法, 不允许用户直接调用 用户在外面只能看到类 TV 提供的公开开机 关机方法, 不知道具体的实现细节 在程序中内部实现方法也略去了具体实现, 在现实过程中这将是一个很复杂的过程, 需要调用多个零部件联合完成 在实际编程过程中, 具体哪个对象的哪些属性 方法需要封装, 封装到什么力度, 需要视具体情况分析而定 而这种分析也已经上升为设计领域, 需要读者对面向对象思想有更深的领悟及更多的相关领域经验 变相 抄袭 继承 继承是指一个类是从另一个类派生而来的, 派生类自动具有了被继承类的所有特性 65

3 第 1 篇 Java 开发基础 其中被继承的类称为 父类, 继承父类的类称为 子类 继承可以使子类具有父类的各种属性和方法, 而不需要再次编写相同的代码 继承也极大地促进了软件的复用, 而且继承的形式可以更加复杂 Java 语言中类继承的语法格式如图 5.1 所示 图 5.1 继承语法图 示例 5-2 对电视机类实现一个比较简单的继承, 其代码如下所示 01 class TV { int volume = 1; public void setvolume(int volume) { 06 this.volume = volume; class GeneralTV extends TV { 11 public static void main(string args[]) { 父类 TV 父类变量 volume 父类方法 setvolume() 继承自父类 子类 GeneralTV 子类变量 volume 子类方法 setvolume() 实例化类对象 12 GeneralTV tv = new GeneralTV (); System.out.println(tv.volume); 15 tv.setvolume(10); 16 System.out.println(tv.volume); 子类对象 继承父类变量 继承父类方法 tv tv.volume tv.setvolume(10) 分析 : 以上代码实现了一个比较简单的继承 首先定义了类 TV, 代表各种电视的基类 类 TV 包含 default 类型的属性 volume 和 public 类型的方法 setvolume() 然后定义了类 GeneralTV, 代表黑白电视 类 GeneralTV 继承自类 TV, 作为类 TV 的子类 类 GeneralTV 没有定义自己的任何属性, 方法也仅包含一个 main() 方法 main() 方法中创建了类 GeneralTV 的一个对象 tv, 首先打印 tv 的属性 volume( 该属性继承自类 TV), 打印结果为 1 然后, 调用继承自类 TV 的方法 setvolume() 最后再次打印 tv 的属性 volume, 打印结果为 10 66

4 第 5 章面向对象编程 注意 : 子类无法继承父类中使用 private 修饰符修饰的类成员 前面章节也讲过类中限定为 private 的成员只能被这个类本身访问 比如示例 5-2 中, 如果属性 volume 被定义为 private, 则语句 tv.volume 会报错 子类除了继承父类的属性和方法外, 还可以定义自己的属性和方法, 这被称为类扩展 扩展的子类既具有父类中普遍通用的功能特性, 还具有自身独特的属性和方法, 从而具有更加完备的功能 示例 5-3 在继承电视机类的同时, 实现类的扩展, 其代码如下所示 01 class TV { int volume = 1; // 定义 public 方法 setvolume 05 public void setvolume(int volume) { 06 this.volume = volume; class ColourTV extends TV { 11 private int color; // 定义 private 属性 color public static void main(string args[]) { 14 ColourTV tv = new ColourTV(); 15 子类对象 16 System.out.println(tv.volume); 子类自身属性 17 tv.setvolume(10); System.out.println(tv.volume); 子类自身方法 20 继承父类变量 21 System.out.println(tv.color); 22 tv.setcolor(5); 继承父类方法 23 System.out.println(tv.getColor()); 调用自身属性 调用自身方法 26 // 得到属性 color 27 public int getcolor() { 28 return color; // 设置属性 color 32 public void setcolor(int color) { 33 this.color = color; tv color getcolor() setcolor(int color) tv.volume tv.setvolume(10) tv.color tv.setcolor(5) 分析 : 以上代码在继承的同时, 实现了类的扩展 同示例 5-2 一样, 首先定义了类 TV, 代表各种电视的基类 类 TV 包含 default 类型的属性 volume 和 public 类型的方法 setvolume 67

5 第 1 篇 Java 开发基础然后定义了类 ColourTV, 代表彩色电视 类 ColourTV 同样继承了父类 TV 的属性 volume() 和 setvolume() 方法 除了继承父类外, 类 ColourTV 还定义了自己的属性 color 及相应的获取 设置方法 getcolor() setcolor() Main() 方法中先创建了类 ColourTV 的一个对象 tv 然后也是调用相关父类的属性和方法, 并进行打印 下面一组代码则调用类 ColourTV 自身的属性和方法, 并打印相关结果 灵活应对 多态 多态是指对于一种服务功能, 可以具有不同的实现方式, 即多种形态 多态形象地描述了现实世界的复杂形态, 使程序具有良好的扩展性 在继承的基础上, 方法重载是实现多态的方式之一 示例 5-4 用方法重载实现不同国家的人多态的问候方式的应用举例, 其代码如下所示 01 class Human { 03 类 Human 04 public void sayhello(char c) { sayhello(char c) 05 System.out.println("Hello!"); 类方法 sayhello(string str) public void sayhello(string str) { 09 System.out.println(" 您好!"); 实例化类对象 类对象 human 13 调用类方法 14 public class TeatClass { human.sayhello("s") public static void main(stringargs[]) 17 { 18 Human human = new Human(); 19 human.sayhello("s"); 20 您好! 分析 : 以上代码首先定义了类 Human, 还有一个 public 方法 sayhello(char c) 然后重载了 sayhello 方法 sayhello (String str) 在测试类 TestClass 中, 创建 Human 对象, 并调用了 sayhello (String str) 方法, 打印的结果为 您好! 说明 : 对于上述示例, 父类更好的实现方式是采用抽象类或接口 有关抽象类或接口的概念在 5.2 节会详细介绍 5.2 抽象类和接口 68 抽象类是 Java 语言中一种特殊的类, 其中包含只进行了声明没有具体实现的抽象方

6 第 5 章面向对象编程法 而接口更像是一种特殊的抽象类, 其中所有方法都只进行了声明没有具体实现 抽象类和接口有着相似之处, 不过也有许多区别 本节将分别对它们进行详细地介绍 抽象类 抽象类是指包含了抽象方法的类 其中, 抽象方法只声明方法名称, 而不指明方法体 当需要表示对问题域进行分析 设计中得出的抽象概念时需要使用抽象类 抽象类比类的继承更高一层, 是对类的抽象 抽象类拥有未实现的方法, 不能被实例化, 只能被继承扩展 通常 Java 语言中抽象类的语法格式如图 5.2 所示 图 5.2 定义抽象类 注意 : 类体中至少包含一个抽象方法 抽象方法不含方法体, 无需 { 示例 5-5 定义一个简单的抽象类, 其代码如下所示 01 abstract class AbstractClass { 03 public void test1() { 04 System.out.println("this is test1!"); // 定义抽象方法 test2, 不含方法体 08 public abstract void test2(); 抽象类 AbstractClass 一般方法 test1() 抽象方法 test2() 实现抽象类 11 public class SubClass extends AbstractClass { 12 // 定义类 subclass, 继承了抽象类 AbstractClass 13 子类 SubClass 14 实现抽象方法 test2() 15 // 实现了抽象类中的 test2 方法 16 public void test2() { 17 System.out.println("this is test2!"); 18 子类对象 sc 19 调用父类 test1() 一般方法 20 public static void main(string args[]) { 21 SubClass sc = new SubClass(); 调用子类实现 test2() 22 的抽象方法 23 sc.test1(); 69

7 第 1 篇 Java 开发基础 24 sc.test2(); this is test1! this is test2! 分析 : 此段代码首先定义了一个抽象类, 类的名字为 AbstractClass 该类包含两个方法, 一个为一般方法 test1(), 另一个是抽象方法 test2() 需要特别注意的是,test1() 方法包含方法体有具体的实现过程 test2() 方法被 abstract 修饰没有方法体, 只是定义了方法结构 然后定义了类 SubClass, 该类继承了抽象类 AbstractClass 在类 SubClass 内, 实现了抽象类 AbstractClass 中的抽象方法 test2() 最后, 在 main() 方法中创建了类 SubClass 的一个实例, 分别调用了 test1() 方法和 test2() 方法 通过语法定义和示例可以看出, 抽象类有如下特点 : 至少包含一个抽象方法 不能被实例化 继承抽象类的子类必须实现其所有抽象方法才能实例化, 否则该子类还是抽象类 在具体使用方面, 抽象类能更准确地模拟对问题领域的理解 而且它可以提供实现的模式, 使实现功能的代码更简单 抽象类一般用于关系密切的对象 其实在好多方面, 抽象类和接口有着相似之处 下面介绍接口的概念, 会与抽象类作一些比较 接口 接口是面向对象编程中又一重要概念 在实际问题中, 有些互不相关的类具有某种相同的行为, 这时可以采用接口来定义这种行为 接口只定义提供什么功能, 而不定义功能的具体实现, 这一点与抽象类似 在 Java 语言中, 不提供类的多继承, 一个子类只能继承自一个父类 为了解决多继承的问题, 在 Java 中可以采用接口来实现 一个类虽然不能同时继承多个类, 却可以同时实现多个接口, 从而可以解决现实中的多继承问题 有关接口的知识包括接口定义和接口实现, 下面分别进行介绍 1. 接口定义要使用接口, 首先需要定义接口 接口定义的语法格式如图 5.3 所示 图 5.3 定义接口 一个接口可有多个父接口, 用逗号隔开 另外在接口的接口体中, 所有成员变量默认 70

8 第 5 章面向对象编程 为 public static final 类型 成员方法默认为 public 和 abstract 类型, 只能包含常量及抽象方法 示例 5-6 定义一个简单的接口, 其代码如下所示 01 public interface InterfaceExm { public static final int X = 1; 03 public void test(); 04 分析 : 以上代码定义了一个比较简单的接口, 接口名为 InterfaceExm 接口 InterfaceExm 的接口体包含 int 型变量 X 和方法 test() 与一般类 抽象类相比, 接口在定义方面有如下特点 : 接口体只能包含常量及抽象方法 接口可以继承多个接口, 而类不能多继承 接口不能包含构造方法 2. 实现接口 接口定义只规定了接口对外提供的功能定义, 没有对功能具体实现 要真正使用接口定义的功能, 需要定义类实现接口 非抽象类实现接口主要是实现接口中定义所有抽象方法 实现接口的语法格式如图 5.4 所示 接口 接口变量 接口方法 InterfaceExm x test() 图 5.4 实现接口 一个类可以实现多个父接口, 用逗号隔开 另外, 在类的类体中, 应该实现父接口中的所有抽象方法 示例 5-7 接口实现的举例, 其代码如下所示 01 interface InterfaceExm { 03 public void test(); 接口 接口方法 InterfaceExm test() 实现接口 接口实现类 TestClass1 06 class TestClass1 implements InterfaceExm { 实现抽象方法 test() public void test() { 实现接口 09 System.out.println("this is first interface test!"); 10 接口实现类 TestClass2 11 实现抽象方法 test() 12 71

9 第 1 篇 Java 开发基础 13 class TestClass2 implements InterfaceExm { public void test() { 16 System.out.println("this is second interface test!"); public class Test { 21 public static void main (String[] args) { 22 InterfaceExm ie; ie = new TestClass1(); ie.test(); ie = new TestClass2(); 35 ie.test(); this is first interface test! this is second interface test! 类类型类变量名称 TestClass1 对象调用接口方法 TestClass2 对象调用接口方法 Test InterfaceExm ie ie ie.test() ie ie.test() 分析 : 以上代码首先定义了一个比较简单的接口, 接口名为 InterfaceExm, 其只包含一个抽象方法 test() 然后分别定义了两个接口实现类 TestClass1 和 TestClass2, 这两个类都实现了接口 InterfaceExm 类 TestClass1 和 TestClass2 在类体内都分别实现了接口中的抽象方法 test(), 实现的不同是打印不同的语句 最后定义了一个测试类 test, 只包含一个 main() 方法 main() 方法中首先定义了接口 InterfaceExm 类型变量 ie, 然后分别对变量 ie 赋予不同的值, 分别为 TestClass1 对象和 TestClass2 对象, 并同时调用接口 InterfaceExm 的抽象方法 test 程序执行结果为打印出不同的语句 通过示例的执行结果可以看出, 虽然调用的形式都是接口 InterfaceExm 的方法 test(), 但由于来自不同的对象, 具有不同的实现, 所以执行的结果各不相同 这也是通常使用接口的一种方式 最后总结一下, 在实现接口方面有如下特点 : 一个类可以同时实现多个接口 接口不能被实例化, 只能通过类实现接口的抽象方法 虽然接口不能被实例化, 但可以定义接口类型变量 当类实现接口时, 非抽象类必须实现所有抽象方法, 否则为抽象类 72

10 第 5 章面向对象编程 5.3 类中类 内部类 内部类指的是在类的内部嵌套定义的类 内部类本身的结构同普通类没什么不同, 只不过定义的位置是在另一个类的内部 定义的内部类同样可以被外部引用 内部类可以只定义类体, 没有名称, 这就是匿名内部类 关于内部类的这些知识下面分别进行介绍 内部类 根据内部类的概念, 内部类定义的位置是在类的内部 在一个类的任意代码块内, 均可以进行内部类的定义 如可以直接作为类成员定义, 可以定义在类的成员方法内及循环体内等 示例 5-8 定义一个简单内部的类, 其代码如下所示 01 public class Outer { private int x = 1; void sayhello() { 06 System.out.println("Hello!"); 外部类 类变量 类方法 Outer x sayhello() 09 class Inner { 10 int y = 0; void test() { 13 System.out.println(x); 14 sayhello(); 内部类类变量类方法 inner y test() 分析 : 首先程序最外层定义了外部类 Outer, 类 Outer 包含成员变量 x 和成员方法 sayhello() 然后, 作为类 Outer 的成员, 定义了内部类 Inner 内部类 Inner 有自己的成员变量 y, 自己的成员方法 test() 在内部类 Inner 的成员方法 test() 中, 第一行代码打印了外部类 Outer 的成员变量 x 的值, 第二行代码调用了外部类 Outer 的成员方法 通过示例可以看出, 内部类可以任意访问外部类中的成员 在其他代码块中定义内部类与示例类似, 这里不再举例说明 需要特别说明的是, 内部类可以被修饰为 static 属性, 这在普通类是不行的 修饰为 static 的内部类相当于提升了类的层次, 变成了外部类, 当然也不能再访问外部类的非 static 成员 示例 5-9 定义一个 static 内部类, 其代码如下所示 01 public class Outer { static class Inner { // 定义内部类 static 成员变量 x 03 static int x = 0; 73

11 第 1 篇 Java 开发基础 // 定义内部类 static 成员方法 test 07 static void test() { 08 System.out.println("test"); 内部类类变量类方法 inner x test() 12 public static void main(string args[]) { 13 System.out.println(Outer.Inner.x); Outer.Inner.test(); test 外部类 调用内部类变量 调用内部类方法 outer Outer.Inner.x Outer.Inner.test() 分析 : 同样, 程序最外层定义了外部类 Outer 然后定义了内部类 Inner, 并且被修饰为 static 属性 内部类 Inner 具有 static 类型成员变量 y,static 成员方法 test() 在外部类 Outer 中定义了 main() 方法 main() 方法第一行代码打印了内部类 Inner 的成员变量 x 的值, 第二行代码调用了内部类 Inner 的成员方法 test() 注意 :static 内部类可以包含 static 成员, 而非 static 内部类却不可以包含 static 成员 更隐蔽 的内部类 匿名内部类 匿名内部类是一种没有类名的特殊内部类 就像仅使用一次的变量可以不定义名称一样, 匿名内部类也是用作定义仅使用一次的类 匿名内部类通常具有特殊的用途, 也能使程序显得更加简洁 示例 5-10 使用匿名内部类实现 Say Hello 功能的应用举例, 其代码如下所示 01 abstract class SayHello { 03 public abstract void hello(); public class Test { // 定义方法 hello, 参数为抽象类 SayHello 类型 09 public void hello(sayhello sh) { 类方法 hello() 实例化类对象 10 sh.hello(); // 定义 main 方法类对象 t 14 public static void main(string args[]) { 调用类方法 t.hello() 15 Test t = new Test(); 抽象类抽象方法 类 sayhello hello() Test 74

12 16 第 5 章面向对象编程 匿名内部类 实现抽象类方法 new SayHello() hello() 17 // 调用 Test 的方法 hello, 参数为匿名内部类 18 t.hello(new SayHello() { // 实现了抽象类 SayHello 的方法 hello 19 public void hello() { System.out.println("Hello!"); ); Hello! 分析 : 以上代码首先定义了一个抽象类 SayHello, 包含一个抽象方法 hello() 然后定义类 Test, 类 Test 包含成员方法 hello() Test 的成员方法 hello() 参数为抽象类 SayHello 类型, 方法体调用参数变量 sh 的 hello() 方法 最后, 类 Test 定义了 main() 方法 main() 方法体首先创建了类 Test 的对象 t, 然后调用了 t 的方法 hello() 关键就在这里, 调用 t 的方法 hello() 时, 参数为一段代码, 这段代码其实就定义了一个匿名内部类 匿名内部类没有类名, 直接用 new 关键字创建对象, 后面 { 部分为匿名内部类的类体 通过示例可以看出, 使用匿名内部类可以不用定义类名, 直接创建类的对象 匿名内部类适用于为该类只创建一个对象的场合, 在后续章节将介绍的图形界面部分会经常使用匿名内部类 对于初学者来说, 刚接触匿名内部类会比较困惑 要解决这个问题, 需要多结合具体程序实例, 多多练习 揣摩, 从而能够加深理解, 对其很好地掌握 5.4 类的仓库 包 在面向对象编程中, 包是 Java 语言所特有的概念 包用来将相关的一组类组织在一起进行管理, 类似操作系统中的文件管理 包在外在形式上就是操作系统中的文件夹, 包的内容就是类文件 不同的包可以包含同名的类, 包机制有效解决了命名冲突问题 有关包的知识包括创建包和使用包, 下面将分别进行介绍 创建包 在使用包之前, 首先需要创建包 创建包的语法格式如下所示 图 5.5 创建包 75

13 第 1 篇 Java 开发基础 示例 5-11 创建包的实例, 其代码如下所示 01 package TestPackage; // 声明所属包为 TestPackage 03 public class Test { 04 // 类体 05 分析 : 以上代码首先定义了一个包, 包名为 TestPackage 然后定义了一个类 Test, 该类所在的包即为 TestPackage 包可以多个层次嵌套, 也就是包内还可以有包 Java 语言中的包在外在形式上对应着操作系统中的目录结构 嵌套的包用. 号分隔, 对应于操作系统, 也就是目录中还具有目录 比如 com.sun, 第一级包为 com, 包 com 内包含第二级包 sun 在操作系统中, 存在名为 com 的目录,com 目录下又具有名为 sun 的目录 注意 : 在编写程序过程中,package 语句必须写在类文件的最上面 使用包 创建了包之后, 经常需要使用不同包中的类 使用不同包中的类主要具有两种形式 : 包名加类名形式和 import 导入形式 另外, 在 Java SE 5.0 版本之后, 还提供了静态导入功能 对这些内容, 下面将分别进行介绍 1. 包名加类名第一种形式采用包名加类名的方式, 语法格式如图 5.6 所示 图 5.6 包名加类名使用包 其中, 参数 PackageName1 PackageName2 和 PackageName3 表示多层次的包的调用, 可以支持任意层次 注意 : 此种形式的使用需要使用完整的包路径 完整的包路径就是从最顶层的包直到包含该类文件的最底层的包的完整路径结构 并且, 所有引用该类的地方都要加完整的包路径 示例 5-12 使用包中的类的第一种形式举例, 其代码如下所示 01 package TestPackage; 03 public class Test { // 引用包路径 java.util.regex 下的类 Pattern 04 java.util.regex.pattern p1; 05 // 引用包路径 java.util.regex 下的类 Pattern 76

14 第 5 章面向对象编程 06 java.util.regex.pattern p2; 分析 : 以上代码定义了一个类 Test, 该类属于包 TestPackage Test 类定义了两个成员变量, 变量类型为外部包 java.util.regex 下的 Pattern 类 可以注意到, 虽然两个变量都是引用同一个类 Pattern, 但是每个变量的类型引用前都要包含完整的包路径 2.import 导入第二种形式采用 import 语句导入的方式, 语法格式如图 5.7 所示 图 5.7 import 导入包 这种形式首先使用 import 语句将要使用的类所在的包导入, 包为完整路径 导入包后, 就可以在程序的任意位置引用包中的类, 类名前不用再加第一种形式中的那种完整包路径 示例 5-13 使用包中的类的第二种形式举例, 其代码如下所示 01 package TestPackage; 03 import java.util.regex.pattern; // 导入包 public class Test { 06 Pattern p1; 07 Pattern p2; 08 分析 : 同形式一的示例一样, 该示例定义了一个 Test 类, 该类属于包 TestPackage Test 类同样定义了两个成员变量, 变量类型都为 Pattern 不同的是, 变量类型 Pattern 前没有形式一示例中的完整的包名,Pattern 类所在的包在程序开始处通过 import 语句导入, 使程序更加简洁 相对于包名加类名的形式, 实际编程过程中更多的是使用 import 导入形式 许多 Java 集成开发环境支持包导入的快捷键, 采用 import 导入形式编写程序更方便和简洁 技巧 : 如果要用到一个包中的多个类, 可以采用 import PackageName1. PackageName2. PackageName3 * 的形式同时导入包中的所有类 3. 静态导入 静态导入是 Java SE 5.0 之后提供的功能, 其语法格式如图 5.8 所示 图 5.8 静态导入 77

15 第 1 篇 Java 开发基础 静态导入与普通导入的区别就是在导入的对象之前增加了 static 修饰符 下面通过具体的实例说明静态导入的作用 示例 5-14 未采用静态导入, 实现打印圆面积的实例, 其代码如下所示 01 import util.constant; // 导入 Constant 类 03 public class Test { 04 public static void main(string args[]) { 05 // 打印圆的面积 06 double r = 3.0; // 半径 07 double zz = Constant.PI * r * r; // 面积 System.out.println(zz); 导入的 Constan 类的代码如下所示 01 package util; 03 public class Constant { 04 public static final double PI = 3.14; // 定义常量 pai 分析 :Test 类的 main() 方法实现了打印圆面积的功能 其中, 用到的常量 PI 在 util 包中的 Constant 类中定义 在 Test 类的头部导入了 Constant 类, 使用常量 PI 的格式为 Constant.PI 上面的实例代码未采用静态导入的形式 下面采用静态导入的方式对原实例进行改造 改造后的代码如下所示 01 import static util.constant.pi; // 静态导入 Constant 类 03 public class Test { 04 public static void main(string args[]) { 05 // 打印圆的周长 06 double r = 3.0; // 半径 07 double zz = PI * r * r; // 周长 System.out.println(zz); 其中,Constant 类的代码没有变化 可以看出, 在采用了静态导入之后, 可以直接使用导入类中的变量, 不需再采用 Constant. 的形式 对于使用导入类的方法的情况也是一样 78

16 第 5 章面向对象编程 5.5 小结 本章进一步深入地介绍了 Java 语言中面向对象编程的相关知识, 包括类的封装 继承 多态以及抽象类 接口 内部类和包等 本章最后给出了一个完整的实例 其中抽象类与接口的具体运用是本章的难点 抽象类与接口是面向对象编程中更加抽象的概念, 要想能真正发挥它们的特点需要多结合具体需求反复实践 第 6 章将介绍 Java 语言中复合数据类型相关的内容, 如数组 字符串 集合等 5.6 习题 1. 定义一个 Person 类, 声明 id name 和 age 成员变量, 以及 getid() getname() 和 getage() 等成员方法 分析 本题主要考查读者对类的封装的掌握 核心代码 本题的关键代码如下所示 public class Person { int id; String name; int age; public int getid(){ return id; public String getname(){ return name; public int getage(){ return age; 2. 定义 Person 类, 声明 int 型变量 id, 初始化为 7, 声明方法 setid() 定义 Student 类继承于 Person 类, 创建 student 对象, 调用父类的 setid() 方法, 然调用父类的 id 变量, 输出 set 后的 id 值 运行结果如下 6 分析 本题主要考查读者对类的继承的掌握 子类继承父类之后, 就可以调用父类中不被声明为 private 的变量和方法 核心代码 本题的关键代码如下所示 public class Student extends Person{ public static void main(string[] args) { Student student = new Student(); 79

17 第 1 篇 Java 开发基础 student.setid(6); System.out.println(student.id); class Person { int id = 7; public int setid(int id){ this.id = id; return id; 3. 定义 Human 类, 还有一个 public 方法 sayhello (String str) 然后重载了 sayhello 方法 sayhello(char c) 在测试类 TestClass 中, 创建 Human 对象, 并调用了 sayhello (char c) 方法, 输出结果 运行结果如下 Hello 分析 本题主要考查读者对类的多态中方法重载的掌握 重载的方法具有相同的方法名, 只是方法的参数类型不同 核心代码 本题的关键代码如下所示 class Human { public void sayhello(string str) { System.out.println(" 您好!"); public void sayhello(char c) { System.out.println("Hello!"); public class TeatClass { public static void main(string args[]) { Human human = new Human(); human.sayhello('c'); 80

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

软件工程文档编制

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

More information

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

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

More information

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

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

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

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

模板

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

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

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

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

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

More information

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

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

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

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

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

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

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

More information

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

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

More information

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

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

More information

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

More information

教案模板4-2

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

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

Guava学习之Resources

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

More information

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

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

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

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

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

More information

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

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

More information

Microsoft Word - 第5章.doc

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

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

何对象存在, 所以, 如果不将它设置为类相关的, 则没有办法得到任何的对象, 也就无法调用这个 main() 方法 知识准备 :static 变量的引用方法 1. 通过对象定位变量 在 节中我们定义了 StaticTest 类, 并在类中定义了 static 变量 现在我们通

何对象存在, 所以, 如果不将它设置为类相关的, 则没有办法得到任何的对象, 也就无法调用这个 main() 方法 知识准备 :static 变量的引用方法 1. 通过对象定位变量 在 节中我们定义了 StaticTest 类, 并在类中定义了 static 变量 现在我们通 第 7 章高级类特性 本章详细介绍 static 变量 方法和初始化段的概念和用法 ;final 数据 方法和类的用 法 ; 抽象类和接口的概念, 以及它们之间的联系和区别 ; 多态概念以及内部类的概念和用 法 ; 最后, 对一些常用的修饰符做了一个简单的总结 7.1 static 关键字 7.1.1 知识准备 :static 概述 通常我们在创建一个类时, 是在描述那个类的对象的外观与行为 只有用

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 - word模板-教师.doc

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

More information

拦截器(Interceptor)的学习

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

More information

untitled

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

More information

chp5_1

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

More information

Microsoft Word - 第2章.doc

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

More information

Chapter 9: Objects and Classes

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

More information

1 1 大概思路 创建 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

<4D6963726F736F667420506F776572506F696E74202D20332D322E432B2BC3E6CFF2B6D4CFF3B3CCD0F2C9E8BCC6A1AAD6D8D4D8A1A2BCCCB3D0A1A2B6E0CCACBACDBEDBBACF2E707074>

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

More information

Microsoft Word - 01.DOC

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

More information

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

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

More information

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

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

More information

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

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

Stateless Session Beans(无状态bean)的学习

Stateless Session Beans(无状态bean)的学习 一 Stateless Session Beans( 无状态 bean) 的学习 第一步 : 要定义一个会话 Bean, 首先需要定义一个包含他所有业务方法的接口 这个接口不需要任何注释, 就像普通的 java 接口那样定义 调用 EJB 的客户端通过使用这个接口引用从 EJB 容器得到的会话 Bean 对象 stub 接口的定义如下: HelloWorld.java package com.foshanshop.ejb3;

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

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

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

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

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

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

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

《大话设计模式》第一章

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

More information

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

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

More information

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

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

javaexample-02.pdf

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

More information

untitled

untitled 4.1AOP AOP Aspect-oriented programming AOP 來說 AOP 令 理 Cross-cutting concerns Aspect Weave 理 Spring AOP 來 AOP 念 4.1.1 理 AOP AOP 見 例 來 例 錄 Logging 錄 便 來 例 行 留 錄 import java.util.logging.*; public class HelloSpeaker

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

第1章 Delphi简介

第1章  Delphi简介 第 3 章 Java 面向对象编程机制 Java 核心技术 计算机程序告诉计算机应该做什么 计算机执行的任何操作都是由程序控制的 程序设计是将计算机要执行的操作或者计算机要解决的问题转变成程序的过程 程序设计的过程主要分为面向过程编程和面向对象编程两种风格, 本书讲解的 Java 语言编程属于面向对象编程技术 本章要点 面向对象编程的基本思想 类与对象 抽象类与接口 Java 简单程序 学习目标 理解面向对象编程的基本思想

More information

CHAPTER VC#

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

More information

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

附录J:Eclipse教程

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

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

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

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

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

使用MapReduce读取XML文件

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

More information

chp4

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

More information

(6) 要 求 付 款 管 理 员 从 预 订 表 中 查 询 距 预 订 的 会 议 时 间 两 周 内 的 预 定, 根 据 客 户 记 录 给 满 足 条 件 的 客 户 发 送 支 付 余 款 要 求 (7) 支 付 余 款 管 理 员 收 到 客 户 余 款 支 付 的 通 知 后, 检

(6) 要 求 付 款 管 理 员 从 预 订 表 中 查 询 距 预 订 的 会 议 时 间 两 周 内 的 预 定, 根 据 客 户 记 录 给 满 足 条 件 的 客 户 发 送 支 付 余 款 要 求 (7) 支 付 余 款 管 理 员 收 到 客 户 余 款 支 付 的 通 知 后, 检 2016 年 上 半 年 软 件 设 计 师 考 试 真 题 ( 下 午 题 ) 下 午 试 题 试 题 一 ( 共 15 分 ) 阅 读 下 列 说 明 和 图, 回 答 问 题 1 至 问 题 4, 将 解 答 填 入 答 题 纸 的 对 应 栏 内 说 明 某 会 议 中 心 提 供 举 办 会 议 的 场 地 设 施 和 各 种 设 备, 供 公 司 与 各 类 组 织 机 构 租 用 场

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

(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

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

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

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

More information

Microsoft Word - 第3章.doc

Microsoft Word - 第3章.doc 第 3 章 求职者在介绍自己的基本情况时不必 从头说起, 比如, 不必介绍自己所具有的人的一般属性等, 因为人们已经知道求职者肯定是一个人, 已经具有了人的一般属性, 求职者只要介绍自己独有的属性就可以了 当准备编写一个类的时候, 发现某个类有我们所需要的成员变量和方法, 如果想复用这个类中的成员变量和方法, 即在所编写的类中不用声明成员变量就相当有了这个成员变量, 不用定义方法就相当有了这个方法,

More information

untitled

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

More information

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

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

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

More information

<4D6963726F736F667420506F776572506F696E74202D20B5DA3035D5C220C3E6CFF2B6D4CFF3B8DFBCB6B3CCD0F2C9E8BCC6>

<4D6963726F736F667420506F776572506F696E74202D20B5DA3035D5C220C3E6CFF2B6D4CFF3B8DFBCB6B3CCD0F2C9E8BCC6> Java 程 序 设 计 教 学 课 件 河 南 农 业 大 学 信 管 学 院 计 算 机 系 河 南 农 业 大 学 信 管 学 院 计 算 机 系 高 级 语 言 程 序 设 计 课 程 组 第 5 章 面 向 对 象 高 级 程 序 设 计 主 要 内 容 5.1 继 承 5.2 多 态 性 5.3 抽 象 类 和 抽 象 方 法 5.4 接 口 5.5 内 部 类 和 匿 名 类 5.1

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

第八章类和对象的扩展 实验目的 (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 - 07 派生数据类型

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

More information

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

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

More information

Microsoft PowerPoint - ch6 [相容模式]

Microsoft PowerPoint - ch6 [相容模式] UiBinder wzyang@asia.edu.tw UiBinder Java GWT UiBinder XML UI i18n (widget) 1 2 UiBinder HelloWidget.ui.xml: UI HelloWidgetBinder HelloWidget.java XML UI Owner class ( Composite ) UI XML UiBinder: Owner

More information

Java 1 Java String Date

Java 1 Java String Date JAVA SCJP Java 1 Java String Date 1Java 01 Java Java 1995 Java Java 21 Java Java 5 1-1 Java Java 1990 12 Patrick Naughton C++ C (Application Programming Interface API Library) Patrick Naughton NeXT Stealth

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

Microsoft PowerPoint - 04-Inheritance.ppt

Microsoft PowerPoint - 04-Inheritance.ppt 继承 派生与多态性 1 本章主要内容 类的继承与派生 类成员的访问控制 简单继承与多重继承 派生类的构造 析构函数 多态性 2 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

Struts2自定义类型转换.doc

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

More information

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

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

More information

本章学习目标 小风 Java 实战系列教程 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

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

输入 project name 选择完成

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

More information

Guava学习之CharSequenceReader

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

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

《计算概论》课程 第十九讲 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

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

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