PowerPoint Presentation

Size: px
Start display at page:

Download "PowerPoint Presentation"

Transcription

1 第 3 章 类 类的继承和接口

2 3.1 类 3.2 包的创建和使用 源文件结构 3.3 类的继承和多态 3.4 接口和接口的实现 3.5 内部类和匿名内部类

3 3.1 类 1 Java 中类的定义格式 : [ 类的修饰符 ] class 类名 [extends 父类名 ]{ 变量声明 ; 构造方法定义 ; 其他方法定义 ;

4 2 创建一个类的对象的格式 : 类名对象名 =new 构造函数 ( 实际参数 ); 3 在类外部访问类的变量或者调用类的方法的格式 : 对象名. 变量名 对象名. 方法名 ( 实际参数 )

5 3.1.1 类的修饰符 1. 类访问权限修饰符 :public ( 公共的 ) public 类可以被任何其他类使用 ; default 类 (class 前无修饰符 ) 只能在它所在的包中访问 一个 Java 源文件包含几个类的定义时, 只能有一个 public 类, 且文件名与该类完全一致

6 2.abstract( 抽象的 ) abstract 修饰不完整的类 ( 抽象类 ), 该类中含有没有方法体的抽象方法, 这些抽象方法必须在其非抽象子类实现 抽象类没有具体实例

7 3.final( 最终的 ) final 用于修饰最终类 final 类不能有子类, 即无法被继承

8 3.1.2 类的成员 有以下三种类型的成员 : 1 域 (field) 类中声明的变量称为域, 用来描述类的属性或状态 一个类的域可以时基本数据类型, 也可以是其他类的对象等

9 2 方法 (method) 定义该类对象所具有的行为 3 内部类定义在一个类里面的类

10 3.1.3 域 域的访问控制修饰 符和其他修饰符 1. 域的初始化 一个类中如果没有定义构造方法, 则编译器会自动生成一个没有参数的构造方法, 用来初始化类对象, 并将类中变量自动初始化为该类的默认值 :

11 整型初始化为 0; 实型初始化为 0.0f 0.0d; 逻辑型初始化为 false; 字符型初始化为 \u0000 ; 类对象初始化为 null, 表明引用不指向任何内存地址

12 例 3.1 定义类和使用类对象 public class TestBirthday { public static void main(string args[]) { Birthday obj1=new Birthday(); obj1.show(); Birthday obj2=new Birthday(1990,11,12); obj2.show();

13 class Birthday { int year, month, day; // 分别表示年月日 Birthday( ) { Birthday(int year, int month, int day) { this.year=year; //this 代表对象本身 this.month=month; this.day=day; void show(){ System.out.println(" 出生年月 :"+year+" 年 +month+" 月 "+day+" 日 ");

14 2. 声明其它类对象作为一个类的域 类的域 ( 变量 ) 可以是基本数据类型, 也可以是其他类的对象

15 例 3.2 类对象作为类的域 //TestPerson.java public class TestPerson { public static void main(string args[]) { Person obj=new Person(" 张三 ", ' 男 ', new Birthday(1988,8,8), 1.75); obj.show(); System.out.println("======== 改变类中变量的取值 =========="); obj.name=" 王立 "; obj.birth=new Birthday(1988,1,20); obj.birth.show(); obj.show();

16 //Person.java public class Person { String name; char sex; Birthday birth; double height; Person(String name, char sex, Birthday birth, double height) { this.name=name; this.sex=sex; this.birth=birth; this.height=height;

17 void show() { System.out.println(" 姓 System.out.println(" 性 birth.show(); System.out.println(" 性 名 :"+name); 别 :"+sex); 别 :"+height); //Birthday.java public class Birthday {

18 3. 域的访问控制 类的内部 : 类的域在类的里面都是可见的, 类中的所有方法都可以使用他们 类的外部 : 访问权限修饰符 在类的外部, 类中域的可见性由关键字 public private protected 来控制 这些关键字限定了该类的具体对象在类的外部对域的访问权限

19 Java 中类成员 ( 域和方法 ) 共有 4 种访问权限 : public: 可以被任何类访问 private: 只能被所属的类访问 protected: 可以被所在的类 同一包的其他类和不同包的子类访问 ; 缺省的 : 只能被同一包的类访问

20 例 3.3 在类的外部试图访问和修改该类的私有域将出现编译错误 //TestPerson.java public class TestPerson { public static void main(string args[]) { Person obj=new Person(" 张三 ", ' 男 ', new Birthday(1988,8,8), 1.75); obj.show(); System.out.println("======== 改变类中变量的取值 =========="); obj.name=" 王立 "; obj.birth=new Birthday(1988,1,20); obj.birth.show(); obj.show();

21 //Person.java public class Person { private String name; char sex; Birthday birth; double height; Person(String name, char sex, Birthday birth, double height) { this.name=name; this.sex=sex; this.birth=birth; this.height=height;

22 void show() { System.out.println(" 姓 System.out.println(" 性 birth.show(); System.out.println(" 性 名 :"+name); 别 :"+sex); 别 :"+height); //Birthday.java public class Birthday {

23 4. 封装和公开 面向对象的程序设计中, 通过类和类成员的访问控制级别的限定, 较好地解决了封装和公开的问题 在实际中最好把类中的成员变量用 protected 或 private 修饰, 使数据得到了封装 为了访问和修改这些数据, 必须提供 public 或 protected 的成员方法来获取或者设置

24 通常获取和设置 private 成员变量的方法命名采用以下形式 : [public protected] 变量类型 get 变量名 (){ return 变量名 ; =========================== [public protected] void set 变量名 ( 类型参数名 ) { 合法性检查并赋值 ; ===========================

25 5. 静态域 (static) 用 static 修饰的变量 静态变量 ( 静态域 ) 静态变量不属于任何一个类的具体对象, 而是所有对象共享 访问静态变量 : 类名. 静态变量 对象名. 静态变量

26 例 3.4 static 变量的含义和使用 //TestCar.java public class TestCar { public static void main(string args[]) { Car obj1=new Car(); Car obj2=new Car(); Car obj3=new Car();

27 System.out.println(" 创建 Car 类对象的个数 :"); System.out.println("Car.counter="+Car.counter); System.out.println("obj1.counter="+obj1.counter); System.out.println("obj2.counter="+obj2.counter); System.out.println("obj3.counter="+obj3.counter);

28 //Car.java public class Car { public static int counter=0; public Car() { counter++;

29 6. 最终域 (final) 若类的成员变量用 final 修饰, 则表明该变量一旦被初始化后就不能重新再赋值, 所以 final 修饰的变量通常是程序中不能改变的常量, 叫做最终域 通常,Java 中的 final 变量 常量, 用 static 修饰, 这样使用时直接用类名做前缀, 定义格式如下 : public static final 类型常量名 = 初始值 ;

30 7. 域的声明格式 类的域 ( 成员变量 ) 的声明格式 : [public protected private] [static] [final] [transient] [volatile] 类型变量名 ; [public protected private] // 访问权限 [static] [final] // 静态的 // 最终的 [transient] // 瞬态的 串行化对象时将忽略它 ( 第 6 章 ) [volatile] // 易逝的 用于修饰多个并发线程的共享变量 ( 第 4 章 )

31 3.1.4 静态方法 抽象方法和最终方法 1. 方法的访问控制修饰符 与变量一样 public private protected 缺省的 ( 没有访问控制修饰符 )

32 2. 静态 (static) 方法 与 static 变量一样, 静态方法不属于类的具体对象, 而是整个类的类方法 如果一个方法的运行与对象的状态 ( 对象变量的值 ) 无关, 那么该方法就应该声明为静态方法 调用静态方法的两种格式 : 类名. 静态方法 对象名. 静态方法

33 这里注意 : 静态方法中只能处理静态变量 静态方法中只能调用静态方法 静态变量和静态方法不能有 this 引用

34 例 3.5 静态方法中不能使用非静态量 方法 //UseStaticVar.java public class UseStaticVar { public int x=9; public static void main(string args[]) { System.out.println("x="+x); add(1); System.out.println("x="+x); public void add(int x) { this.x+=x;

35 程序的修改方法 : 通过类的对象访问 x 和调用 add 方法 UseStaticVar obj=new UseStaticVar(); obj.x; obj.add(1);

36 程序的修改方法 : 增加修饰符 public static int x=9; public static void add(int x) { this.x+=x;

37 3. 最终 (final) 方法 final 可用来修饰类中的方法, 称为最终方法 这样可以防止子类覆盖从父类继承而来的方法

38 4. 抽象 (abstract) 方法 用 abstract 修饰的方法, 称为抽象方法, 抽象方法只有方法头, 没有方法体, 而以一个分号结束 例如, public abstract double area(double x,double y); 抽象方法的声明通常出现的抽象类和接口中 显然, 方法修饰符 abstract 和 final 不可能同时使用

39 5. 方法的定义格式 方法的定义格式如下 : [public protected private] // 访问控制级别 [static] // 类方法 [final abstract] // 不能同时使用 [native] // 本地方法 [synchronized] // 同步方法返回值类型方法名 ( 参数列表 ) [throws 异常 ] {.;

40 3.1.5 构造方法 1. 构造方法规则 构造方法名字必须与类名相同 ; 构造方法一定不能有返回值类型 ; 访问控制修饰符 : public protected private 缺省的

41 构造方法不能用 static 修饰 ; 类中无任何构造方法, 编译器会自动生成无参数的构造方法 ; 类中定义构造方法, 编译器不会自动生成默认构造方法 ; 构造方法可以重载 重载的构造方法可以通过 this() 实现互相调用, 但必须是第一条语句 ; 子类的构造方法可以通过 super() 调用其直接父类的构造方法, 但必须是第一条语句

42 2. 构造方法的重载 例 3.6 构造方法的重载和相互调用 //TestBirthday.java public class TestBirthday { public static void main(string args[]) { Birthday obj1=new Birthday(); System.out.println(obj1.toString()); Birthday obj2=new Birthday(1990,11,12); System.out.println(obj2.toString());

43 //Birthday.java public class Birthday { private int year, month, day;// 分别表示年月日 public Birthday( ) { public Birthday(int year) { this(); this.year=year;

44 public Birthday(int year, int month) { this(year); this.month=month; public Birthday(int year, int month, int day) { this(year, month); this.day=day; public String tostring() { return " 出生年月 :"+year+" 年 "+month+" 月 "+day+" 日 ";

45 3.1.6 关键字 this 类定义中使用 this, 当创建该类的对象后,this 代表类对象自身 : this. 变量名 this. 方法名 静态变量和静态方法不能通过 this 做前缀来使用 重载的构造方法通过 this() 相互调用, 但必须是第一条语句

46 例 3.7 this 的使用 方法 1 //TestBirthday.java public class TestBirthday { public static void main(string args[]) { Birthday obj=new Birthday(1990,11,12); System.out.println(obj.toString()); String str=obj.setyear(1988).setmonth(8).setday(28). tostring(); System.out.println(str);

47 //Birthday.java public class Birthday { // 第 3~26 行与例 3.6 一样 public Birthday setyear(int year) { this.year=year; return this; public Birthday setmonth(int month) { this.month=month; return this; public Birthday setday(int day) { this.day=day; return this;

48 例 3.7 this 的使用 方法 2 //TestBirthday.java public class TestBirthday { public static void main(string args[]) { Birthday obj=new Birthday(1990,11,12); System.out.println(obj.toString()); obj.setyear(1988); obj.setmonth(8); obj.setday(28); String str=obj.tostring(); System.out.println(str);

49 //Birthday.java public class Birthday { // 第 3~26 行与例 3.6 一样 public void setyear(int year) { this.year=year; public void setmonth(int month) { this.month=month; public void setday(int day) { this.day=day;

50 3.1.7 抽象和封装 Java 编程的首要任务之一就是创造新的数据类型 类, 并描述这些数据类型对象之间的交互 抽象 : 通过对现实世界一类对象的共同属性和特征进行抽象, 并用计算机语言描述和实现, 从而解决许多实际问题

51 封装 : 通过包组织 设定类的访问权限和类成员的访问权限, 实现数据的封装 通过对象的封装, 实现了模块化和信息隐藏, 有利于程序的可移植性和安全性, 同时也有利于对复杂对象的管理

52 3.1.8 对象的清除 对象的生命周期分为三个阶段 : 生成 :new 运算符开辟内存空间, 构造方法完成对象初始化 ; 使用 : 利用对象名做前缀访问对象的变量, 调用对象的方法 ; 清除 : 不再使用的对象称为垃圾内存, 需要清除从而释放内存空间

53 垃圾自动收集机制 : Java 中清除无用对象所占据的内存空间是通过内存垃圾自动收集机制实现的 垃圾收集器自动扫描对象的动态内存区, 对所引用的对象加标记, 然后把没有引用的对象作为垃圾收集起来并释放内存

54 3.2 包的创建和使用 源文件结构 包 包 (package) 文件夹 包用来把一些相关的类 接口放在一起的组织结构 它是一个相对独立的软件单元, 可以理解为放置这些类和接口的文件夹

55 例如 : java.lang 包 java.applet 包 java.awt 包 java.io 包 javax.swing 包等包中也可以有子包, 例如 : java.awt.event 包

56 一个包中的类的完全限定名是 : 包名. 子包名. 类名 包的名字都小写 包名具有层次 分隔用句点例如,java.lang.Sytem 类 java.applet.applet 类 java.awt.graphics 类 java.util.arrays 类

57 3.2.2 创建包和使用包中的类 1. 创建包 包语句格式 : package 包名. 子包名 ; 包语句必须是 Java 源文件中的第一条语句 ( 除注释行外 ) 没有包定义语句, 则 java 认为它在缺省包 ( 没有包名的包 ) 中

58 例 3.8 创建包 //Birthday.java package mylib.myclasses; public class Birthday { private int year, month, day;// 分别表示年月日 public Birthday( ) {

59 public Birthday(int year) { this(); this.year=year; public Birthday(int year, int month) { this(year); this.month=month;

60 public Birthday(int year, int month, int day) { this(year, month); this.day=day; public String tostring() { return " 出生年月 :"+year+" 年 "+month+" 月 "+day+" 日 ";

61 public Birthday setyear(int year) { this.year=year; return this; public Birthday setmonth(int month) { this.month=month; return this;

62 public Birthday setday(int day) { this.day=day; return this;

63 2. 导入包中的类 import 包名. 类名 ; import 包名.*; 如果没有 import 语句, 也可以使用类的完全限定名 : 包名. 类名特别注意 : 在程序中导入用户自定义包中的类, 必须设置 classpath 环境变量的值, 指明导入类的出处, 否则编译出错

64 例 3.9 使用包中的类 //Test.java import mylib.myclasses.birthday; public class Test { public static void main(string args[]) { Birthday obj=new Birthday(1990,11,12); System.out.println(obj.toString());

65 String str=obj.setyear(1988).setmonth(8).setday(28). tostring(); System.out.println(str);

66 3.2.3 源文件结构和程序说明文档的生成 1. 源文件结构 源文件只能有一个公共类 (public class), 可包含多个非公共类 源文件名必须与公共类名完全相同 文件的后缀名为 java

67 创建包 (package) 的语句必须位于源文件的第 1 行 有导入 (import) 语句, 必须位于包语句和类声明之间 包语句和导入语句后是类的声明 ( 类头 ) 和放在花括号中的类体

68 类体中包含类的变量声明 构造方法定义和方法定义, 他们都放在类声明后面的花括号中 可以按任意顺序列出, 但通常类中先声明变量 后定义构造方法 再定义其他方法

69 没有导入语句, 则程序中使用该类的完全限定名 : 包名. 类名

70 2. 生成程序说明文档 文档注释 : /** 文档注释 */ 文档注释写在类声明 变量声明和方法定义的前面, 分别对类 变量和方法作出说明

71 文档注释可以对方法参数 返回值等进行说明 返回类型说明

72 在命令行使用 : javadoc 源程序名.java 可从 java 源程序中提取这些文档注释, 并生成具有 JavaAPI 文档风格的程序说明文档

73 例 3.10 生成文档注释 package mylib.myclasses.mygraph; /**MyPoint 类用来创建平面坐标系中的一个点 (x,y) */ public class MyPoint {

74 /** 点的 x 坐标 */ protected int x; /** 点的 x 坐标 */ protected int y; /** 构造方法, 点坐标值设置为 (0,0)*/ public MyPoint( ) { System.out.println(" 调用 MyPoint 类的无参数构造方法 ");

75 /** 构造方法, 创建一个坐标值为 (x,y) 的点 x 点的 x 坐标 y 点的 y 坐标 */ public MyPoint(int x,int y) { this.x=x; this.y=y;

76 /** 设置点的 x 坐标 x 用来给类中变量 x 赋值 */ public void setx(int x) { this.x=x; /** 得到点的 x 坐标 该方法返回点的 x 坐标 */ public int getx() { return x;

77 /** 设置点的 y 坐标 y 用来给类中变量 y 赋值 */ public void sety(int y) { this.y=y; /** 得到点的 y 坐标 该方法返回点的 y 坐标 */ public int gety() { return y;

78 /** 返回点坐标的字符串表示 (x,y) 该方法返回字符串 */ public String tostring() { return "("+x+","+y+")";

79 3.3 类的继承和多态 系 类的包含关系和继承关 当一个类定义中包含另一个类的实例时, 就是类的包含关系, 通常称为 HAS-A 关系 对象之间还有一种 IS-A 的关系, 在面向对象的程序设计中, 称为继承关系

80 汽车的 HAS-A 关系

81 水果的 IS-A 关系

82 在面向对象的程序设计中, 在设计对象模型时, 首先需要区分继承关系和包含关系 通过设计好的类层次结构, 利用类间的继承关系可以提高程序代码的重用性和程序的可扩展性

83 义 类成员的继承和重新定 1. 定义子类的格式 定义类 A 的子类 B 的格式 : [ 类的修饰符 ] class B extends A { 类的变量定义 ; 构造方法定义 ; 方法定义 ;

84 如果一个类没有使用关键字 extends 显示的指明其父类,Java 中默认其父类是 Object 类 Object 类是类层次结构的根,Java 中所有的类从根本上都继承自这个类 Object 类是 Java 中唯一没有父类的类 Object 类在 java.long 包中

85 2. 类成员的继承 子类继承某个父类后 : 子类便拥有了父类的所有非私有 (private) 变量和方法 如果子类有多个间接父类, 子类继承所有间接父类的非私有变量和方法

86 3. 子类添加成员 继承的目的是为了扩展父类 子类通过加入自己的变量和方法来实现其特有的属性和行为 子类比它的父类大 ( 成员更多 ), 但子类更具特殊性, 针对更具体的对象

87 4. 重新定义从父类继承来的成 员 变量隐藏和方法覆盖 子类可以把从父类继承来的不需要或者不恰当的变量和方法重新定义 变量隐藏 当父类的变量不适合子类时, 子类可以把从父类继承来的同名变量重新定义 这时子类可以通过以下的方式引用父类的同名变量 : super. 变量名

88 方法覆盖 如果从父类继承来的方法不能满足子类的功能要求, 子类可以重写该方法, 即方法覆盖 这时子类可以通过以下的方式调用父类的同名方法 : super. 方法名 ()

89 5. 方法覆盖的规则 子类覆盖父类的同名方法时, 必须满足 : 覆盖方法的返回类型 方法名称 参数列表必须与原方法的相同 覆盖方法不能比原方法访问性差 ( 即访问权限不允许缩小 ) 覆盖方法不能比原方法抛出更多的异常 被覆盖的方法不能是 final 类型, 因为 final 修饰的方法是无法覆盖的

90 被覆盖的方法不能为 private, 否则在其子类中只是新定义了一个方法, 并没有对其进行覆盖 被覆盖的方法不能为 static, 因为静态方法是在编译的时候把静态方法和类的引用类型进行匹配

91 6. 方法重载和方法覆盖的区别 方法的重载 : 指同一个类中定义多个同名方法, 它们的参数列表不同, 但可以有不同的返回值类型 重载方法调用时根据其参数类型 个数和顺序来区分

92 方法覆盖 : 子类把继承来的方法重新定义, 方法头一样, 但方法体不同, 即方法实现的功能不同, 从而满足子类自己的特殊要求

93 覆盖和重载的不同 : 方法覆盖要求参数列表必须一致, 而方法重载要求参数列表必须不一致 方法覆盖要求返回类型必须一致, 方法重载对此没有要求 方法覆盖只能用于子类覆盖父类的方法, 方法重载用于同一个类中的所有方法 ( 包括从父类中继承而来的方法 )

94 方法覆盖对方法的访问权限和抛出的异常有特殊的要求, 而方法重载在这方面没有任何限制 父类的一个方法只能被子类覆盖一次, 而一个方法可以在所有的类中可以被重载多次

95 例 3.11 点类 MyPoint 扩展到圆类 MyCircle //MyCircle.java package mylib.myclasses.mygraph; public class MyCircle extends MyPoint { protected int radius;// 声明圆的半径 public MyCircle( ) { System.out.println(" 调用 MyCircle 类的无参数构造方法 ");

96 public MyCircle(int x,int y, int radius) { /*super(x,y); // 调用父类有两个整型参数的构造方法 */ this.x=x; this.y=y; this.radius=radius;

97 public void setradius(int radius) { if(radius>0)// 确保半径不被修改为负数 this.radius=radius; public int getradius() { return radius; public double area() { return Math.PI*radius*radius;

98 public String tostring() { // 覆盖父类的方法 return " 圆心 :"+super.tostring()+"; 半径 :"+radius;

99 例 3.12 测试例 3.11 中的 MyCircle 类 //TestMyCircle.java import mylib.myclasses.mygraph.mycircle; public class TestMyCircle { public static void main(string args[]) {

100 MyCircle obj=new MyCircle(10,10,5); System.out.println(obj.toString()); System.out.println(" 圆的面积 : "+obj.area());

101 obj.setx(5); //obj.x=5; obj.sety(15); //obj.y=15; obj.setradius(10); //obj.radius=10; System.out.println(obj.toString()); System.out.println(" 圆的面积 : "+obj.area());

102 3.3.3 子类对父类构造方法的 调用 关键字 super 在子类中使用 super 做前缀可以引用被子类隐藏的父类的变量以及被子类覆盖的父类的方法 ; 子类构造方法中可以通过 super( 实际参数 ) 调用父类的构造方法, 但必须时第一条语句

103 关键字 super 的使用规则 : super. 变量名引用被子类隐藏的父类中的变量 ; super. 方法名调用被子类覆盖的父类中的方法 ; super( 参数 ) 子类构造方法中调用父类构造方法 注意, 构造方法中 this() 和 super() 只能使用其一

104 例 3.13 圆类 MyCircle 扩展到球类 MySphere //MySphere.java package mylib.myclasses.mygraph; public class MySphere extends MyCircle { protected int z; public MySphere( ) { System.out.println(" 调用 MySphere 类的无参数构造方法 ");

105 public MySphere(int x,int y, int z, int radius) { /*super(x,y,radius); // 调用父类有 3 个整型参数的构造方法 */ this.x=x; this.y=y; this.z=z; this.radius=radius;

106 public void setz(int z) {// 设置球心的 z 坐标 this.z=z; public int getz() { // 得到球心的 z 坐标 return z; public double area() { // 覆盖父类的同名方法, 求球的表面积 :4*Math.PI*r*r return 4*Math.PI*radius*radius;

107 public double volume() { // 子类添加的求球的体积的方法 :4*Math.PI*r*r*r/3 return 4*Math.PI*Math.pow(radius,3)/3; public String tostring() { // 覆盖父类的同名方法, 满足子类的要求 return " 球心 :"+"("+x+","+y+","+z+")"+"; 半径 :" +radius;

108 例 3.14 测试球类 MySphere //TestMySphere.java import mylib.myclasses.mygraph.mysphere; public class TestMySphere { public static void main(string args[]) {

109 MySphere obj=new MySphere(); obj.setx(5); obj.sety(15); obj.setz(25); obj.setradius(5); System.out.println(obj.toString()); System.out.println(" 球的面积 : "+obj.area()); System.out.println(" 球的体积 : "+obj.volume());

110 3.3.4 父类和子类对象的转换 Java 语言允许父类对象和子类的对象之间可进行类型转换 没有继承关系的类对象之间不可以进行类型转换 在继承链中, 子类向父类转换称为 向上转换, 父类向子类转换称为 向下转换 向上转换可以自动完成 ; 而向下转换必须采用强制类型转换, 即 ( 子类名 ) 父类对象

111 向上转换 : 子类向父类转换 MyCircle obj1=new MyCircle(8,8,5); MyCircle obj2=new MySphere(8,8,8,10); 当子类实例赋值给父类对象 obj2 后, obj2 引用的实际上是子类实例, 但通过 obj2 只能引用与父类同名的那些成员

112 向下转型 父类向子类转换 MyCircle obj1=new MyCircle(8,8,5); MySphere obj3=(mysphere) obj1; 注意 : 不能直接将父类的对象强制转换为子类类型, 只能将向上转型后的子类对象再次转换为子类类型, 如 MyCircle obj2=new MySphere(8,8,8,10); MySphere obj3=(mysphere) obj2;

113 例 3.15 运行多态性 父类和子类对象的转换 //TestMySphere.java import mylib.myclasses.mygraph.*; public class Test2 { public static void main(string args[]) { System.out.println("================="); MyPoint obj1=new MyPoint(1,1); System.out.println("\t"+obj1.toString());

114 System.out.println("================="); obj1=new MyCircle(2,2,2); System.out.println("\t"+obj1.toString()); if(obj1 instanceof MyCircle){ MyCircle obj2=(mycircle)obj1; System.out.println("\t 圆的面积 : "+obj2.area());

115 System.out.println("================="); obj1=new MySphere(3,3,3,3); System.out.println("\t"+obj1.toString()); if(obj1 instanceof MySphere) { MySphere obj3=(mysphere)obj1; System.out.println("\t 球的表面积 : "+obj3.area()); System.out.println("\t 球的体积 : "+obj3.volume());

116

117 例 :Java 程序运行的多态性 public class Demo { public static void main(string[] args){ // 借助多态, 一个主人可以给多个动物喂食 Master ma = new Master(); ma.feed(new Animal(), new Food()); ma.feed(new Cat(), new Fish()); ma.feed(new Dog(), new Bone()); // Master 类 class Master{ public void feed(animal an, Food f){ an.eat(f);

118 // Animal 类及其子类 class Animal{ public void eat(food f){ System.out.println(" 我是一个小动物, 正在吃 " + f.getfood()); class Cat extends Animal{ public void eat(food f){//cat 类覆盖了 Animal 类的 eat() 方法 System.out.println(" 我是一只小猫咪, 正在吃 " + f.getfood()); class Dog extends Animal{ public void eat(food f ){//Dog 类覆盖了 Animal 类的 eat() 方法 System.out.println(" 我是一只狗狗, 正在吃 " + f.getfood());

119 // Food 及其子类 class Food{ public String getfood(){ return 食物 "; class Fish extends Food{ public String getfood(){//fish 类覆盖了 Food 类的 getfood() 方法 return " 鱼 "; class Bone extends Food{ public String getfood (){//Bone 类覆盖了 Food 类的 getfood() 方法 return " 骨头 ";

120 运行结果 : 我是一个小动物, 正在吃事物我是一只小猫咪, 正在吃鱼我是一只狗狗, 正在吃骨头

121 3.3.5 抽象类和最终类 面向对象的程序设计中, 通常会定义一种表示抽象概念且不能被实例化的类, 其作用是为派生类提供一个恰当的父类, 这样的类就称为抽象类 从继承性的角度看, 它处于类层次关系的上层, 通常作为父类

122 1. 抽象类 (abstract) 抽象方法是只有方法头 没有方法体 如果一个类包含抽象方法, 则该类必须声明为 abstract 抽象类中还可以定义变量 构造方法和其它非抽象方法 没有具体实现父类所有抽象方法的子类仍然要声明为抽象类 抽象类不能创建具体实例

123 例 3.16 抽象类派生具体子类 //Animal.java package mylib.ani;// 创建 mylib.ani 包 public abstract class Animal { String str; public Animal(String s) { str=s; public abstract void eat(); // 抽象方法

124 //Horse.java package mylib.ani; public class Horse extends Animal { public Horse(String s) { super(s); public void eat() { System.out.println(" 马吃草 ");

125 //Pig.java package mylib.ani; public class Pig extends Animal{ public Pig(String s) { super(s); public void eat() { System.out.println(" 猪吃饲料 ");

126 例 3.17 测试运行多态性 //Test.java import mylib.ani.animal; import mylib.ani.horse; import mylib.ani.pig;

127 public class Test { public static void main(string args[]) { Horse h1=new Horse(" 马 "); Pig p1=new Pig(" 猪 "); h1.eat(); p1.eat();

128 System.out.println("==== 多态性 ===="); //Animal a=new Animal(); // 非法, 抽象类不能实例化 Animal a1=new Horse( 马 ); //Animal 类型的引用, 引用的是 Horse 实例 Animal a2=new Pig(" 猪 "); //Animal 类型的引用, 引用的是 Pig 实例 a1.eat(); a2.eat();

129 2. 最终类 (final) 最终类用 final 关键字修饰, 通常处在类层次结构中的底层 final 类通常是完成一定标准功能的类, 如 java.lang 中的 Math 类 final 类不能派生子类, 通常这是出于安全考虑, 如 java.lang 中的 String 类 类的修饰符 abstract 和 final 不可能同时修饰一个类

130 3.4 接口和接口的实现 接口概述 在面向对象的程序设计中, 类的继承可以分为单继承和多继承两种 如果一个类只能有一个直接父类, 称为单继承 如果一个类可以有多个直接父类, 称为多继承 Java 语言只支持类的单继承, 所以 Java 中类间的层次是树状结构, 而不是网状结构 这使得类间的关系相对简单, 简化了程序的结构, 但这种单继承并不能很好地描述现实问题

131 链 : 例如, 在某个项目开发中有如下一个继承 A -> B -> C -> D -> E, 如果需要为 C D E 类添加某些通用的功能, 同时不影响它们的父类 A 和 B 最简单的方法是让 C 类再继承另外一个父类, 然而 Java 是一种单继承的语言, 不能再让 C 类继承另外一个父类 此时, 可以通过接口 (interface) 来实现多继承

132 接口用 interface 关键字来声明 接口中只能定义静态常量和抽象方法 抽象方法只有方法头, 没有方法体 接口可以看做是 一种特殊的抽象类, 它比抽象类更加 抽象 接口只规定一个类必须完成的功能, 而不规定功能的具体实现方法 与类的继承类似, 接口也可以继承, 但 Java 中接口可以多继承, 即一个接口可以同时继承多个接口 同样, 一个类可以实现多个接口, 这就实现了与类的多继承相似的功能

133 3.4.2 自定义接口和实现接口 1. 如何自定义接口 定义接口 : [public] interface 接口名称 [extends 父接口名列表 ] { // 静态常量 [public][static][final] 数据类型变量名 = 常量值 ; // 抽象方法 [public][abstract] 返回值类型方法名 ( 参数列表 );

134 定义接口时, 常量和方法的修饰符可以省略 ; 但在类中具体实现接口的抽象方法时, 方法的修饰符不可以省略 和类一样, 接口也可以通过 extends 表示继承关系, 子接口继承父接口所有的属性和方法 不同的是, 接口支持多继承, 一个子接口可以同时继承多个父接口

135 例 3.18 定义接口 MyInterface, 接口中有一个常量 G=88 和抽象方法 show( ) 接口保存为 MyInterface.java, 并将编译后的字节码文件 MyInterface.class 放到 mylib.myclasses 包中

136 例 3.18 定义接口 //MyInterface.java package mylib.myclasses; public interface MyInterface { // 接口没有构造方法, 不能实例化 public static final double G=88; public abstract void show();

137 2. 如何实现接口 一个类实现接口的定义格式如下 : [ 修饰符 ] class 类名 [extends 父类名 ] implements 接口 A, 接口 B, { 类的成员变量和成员方法 ; 为接口 A 中的所有方法编写方法体, 实现接口 A; 为接口 B 中的所有方法编写方法体, 实现接口 B; 一个类实现接口后, 接口中的成员就被该类所拥有, 因此在单继承的情况通过实现多个接口达到了多继承的目的, 增加了类的功能

138 例 3.19 定义类 A, 演示类 A 如何实现例 3.18 中自定义的 MyInterface 接口 并将编译后的字节码文件 A.class 放到 mylib.myclasses 包中

139 例 3.19 实现接口 //A.java package mylib.myclasses; public class A implements MyInterface { String str; public A(String s) { str=s; public void show() { // 实现接口中的方法 System.out.println(str+ : G= +G); // 访问从接口继承而来的变量

140 3. 接口的多态使用 例 3.20 编写应用程序, 使用例 3.19 中的类 A, 演示接口的多态使用

141 例 3.20 接口多态 //Test.java import mylib.myclasses.a; import mylib.myclasses.myinterface; public class Test { public static void main(string args[]) { A obj1=new A( 类 A: ); // 创建 A 类的实例 obj1.show(); // 调用类 A 实现的接口中的方法 System.out.println("obj1.G="+obj1.G);

142 System.out.println("===== 接口的运行时多态 ======"); MyInterface obj2=new A( 类 A: ); // 接口类型的引用 obj2.show();// 根据引用的实际实例, 调用类 A 的 show 方法 System.out.println("obj2.G="+obj2.G);

143 3.4.3 Java 类库中的接口实现举例与类一样,Java 根据接口的相关性把接口也组织到不同的包中

144 在 java.awt.event 包中,KeyListener 是专门对键盘事件 (KeyEvent) 做出相应的接口 KeyListener 包含三个响应不同的抽象方 法 public interface KeyListener { public void keytyped(keyevent e);// 敲击时执行 public void keypressed(keyevent e);// 键压下时执行 public void keyreleased(keyevent e);// 键释放时执行

145 在 java.awt.event 包中,KeyEvent 是专门针对键盘事件而编写的类 KeyEvent 类的 getkeychar() 可以获取所敲击键盘代表的字符 例如, 敲击键盘字符键 r, 该方法返回字符 r

146 为了在小程序响应键盘事件, 需要通过 addkeylinstener 方法实现小程序对键盘的监听, 该方法是小程序从其间接父类 Component 继承而来 : public void addkeylistener(keylistener Listen); 由于接口不能被实例化, 所以方法参数 Listen 是 KeyListener 接口的引用,Listen 实际引用的是实现 KeyListener 的类对象

147 例如, 在对接口引用时, 实际引用的是实现该接口的类对象 : Handler handler = new MyHander(); public class MyHandler implements Handler{ public void Hellp(){ System.out.println( my Handler implements );

148 例 3.21 键盘事件 //TestKeyListener.java import java.applet.applet; import java.awt.graphics; import java.awt.color; import java.awt.event.keyevent; import java.awt.event.keylistener;

149 public class TestKeyListener extends Applet implements KeyListener { Color clr; public void init() { addkeylistener(this); // 增加对键盘事件的监听,this 代表小程序本身

150 public void keytyped(keyevent e) {// 实现接口中的抽象方法 if(e.getkeychar()=='r' e.getkeychar()=='r') clr=color.red; else if(e.getkeychar()=='g' e.getkeychar()=='g') clr=color.green; elseif(e.getkeychar()=='b' e.getkeychar()=='b') clr=color.blue; else clr=color.black; setbackground(clr);

151 public void keyreleased( KeyEvent e ) { public void keypressed( KeyEvent e ) {

152 3.5 内部类和匿名内部类 内部类 : 内部类 内部类是定义在一个类的类体中的类 内部类也可以包含变量和方法 内部类像外部类的变量和方法一样, 也是外部类的成员之一

153 则 : 1. 外部类访问内部类成员 外部类和内部类成员的相互访问的规 与外部类的变量和方法一样, 内部类可以直接访问外部类的成员 ( 包括 private 成员 ); 外部类不能直接使用外部类的成员, 但外部类通过创建内部类的实例来访问内部类的成员

154 内部类及成员的修饰符, 含义与前面讲过的类似 : public protected private static abstract final

155 内部类用 static 修饰 表明它是外部类的静态成员, 没有外部类实例时, 能够访问它

156 例 3.22 外部类和内部类成员的相互访问 //A.java package mylib.outin; public class A { // 外部类 A private String outstr; public A(String s) { outstr=s;

157 public void outmethod() { // 访问内部类成员的方法 B b1=new B(); // 创建内部类实例 System.out.println(" 内部类的变量 :"+b1.instr); b1.inmethod();

158 public class B { // 内部类 B public String instr=" 内部类的变量 "; public void inmethod() {// 访问外部类成员的方法 System.out.println(" 外部类的变量 :"+outstr);

159 2. 在外部类之外访问内部类的成员 因为内部类是外部类的成员, 如果内部类的访问权限是公有的, 可以用下面的方式访问内部类的成员 : 先创建外部类实例 A a=new A(" 外部类 A"); 通过外部类实例再创建内部类对象 A.B b=a.new B(); 通过内部类对象访问内部类中的成员 ( 但必须具备相应的访问权限 )

160 例 3.23 外部类之外访问内部类成员 //TestAB.java import mylib.outin.a; public class TestAB { public static void main(string args[]) { A a=new A( 外部类 A ); // 创建类 A 的实例 a a.outmethod(); // 调用类 A 的方法

161 System.out.println("==== 创建内部类实例 ===="); A.B b=a.new B(); // 通过外部类实例 a 创建内部类实例 b System.out.println( b.instr= +b.instr); // 访问内部类变量 b.inmethod(); // 调用内部类的方法

162 3. 利用内部类实现键盘事件处理 一个类实现接口必须为接口中的所有抽象方法编写方法体 如果接口中的方法比较多, 那么分别实现这些抽象方法是的程序代码增加很多 如果通过内部类来处理事件响应, 可以减少程序代码和增加程序的可读性

163 Java 中提供了键盘适配器 KeyAdapter 类, 该类通过添加空方法体实现了 KeyListener 接口中的 3 个抽象方法, 其定义如下 : Public class KeyAdapter implements KeyListener{ public void keytyped(keyevent e) public void keypressed(keyevent e) public void keyreleased(keyevent e)

164 例 3.24 用内部类实现键盘事件处理 //TestKeyListener.java import java.applet.applet; import java.awt.*; import java.awt.event.*; public class TestKeyListener extends Applet { Color clr;

165 public void init() { addkeylistener(new MyType()); // 增加对键盘事件的监听, 内部类 MyTpye 实现了 KeyListener 接口 class MyType extends KeyAdapter { // 定义内部类处理键盘事件

166 public void keytyped(keyevent e) { // 覆盖父类方法, 处理键盘敲击事件 if(e.getkeychar()=='r' e.getkeychar()=='r') clr=color.red; else if(e.getkeychar()=='g' e.getkeychar()=='g') clr=color.green; else if(e.getkeychar()=='b' e.getkeychar()=='b') clr=color.blue;

167 else clr=color.black; setbackground(clr);

168 3.5.2 匿名内部类 1. 什么是匿名内部类? 匿名内部类就是没有名字的内部类

169 例 3.25 匿名内部类的定义和使用 //Test.java public class Test { public static void main(string args[]) { Y b=new Y(); // 创建类 Y 的对象 b b.showy(); // 调用类 b 的方法

170 // 定义类 X class X { public void showx() { System.out.println(" 类 X 的方法 ");

171 // 定义类 Y class Y { // 定义匿名内部类, 它是类 X 的子类, 实例化赋值给 X 的对象 a X a=new X( ) { public void showx() { // 覆盖父类 X 的同名方法 System.out.println(" 匿名内部类 (X 的子类 ) 的方法 "); ;// 这里必须有分号

172 public void showy() { a.showx(); // 通过父类 X 的对象 a 调用匿名子类的 showx() 方法

173 处理 2. 利用匿名内部类实现键盘事件 匿名内部类是定义在一个表达式范围里的类, 可以用来给对象赋值, 更多的时候用来在事件处理中作为方法的参数 匿名内部类经常用在 Java 的各种事件处理中

174 例 3.26 匿名内部类处理键盘事件 //TestKeyListener.java import java.applet.applet; import java.awt.*; import java.awt.event.*; public class TestKeyListener extends Applet { Color clr;

175 public void init() {// 增加对键盘事件的监听 addkeylistener( new KeyAdapter() { // 定义并实例化匿名内部类 public void keytyped( KeyEvent e ) { // 覆盖 KeyAdapter 类的 keytyped 方法 if(e.getkeychar()= ='r' e.getkeychar()= ='R') clr=color.red;

176 else if(e.getkeychar()= ='g' e.getkeychar()= ='G') clr=color.green; else if(e.getkeychar()= ='b' e.getkeychar()= ='B') clr=color.blue; else clr=color.black; setbackground(clr); );

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

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

More information

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

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

More information

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

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

More information

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

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

More information

软件工程文档编制

软件工程文档编制 实训抽象类 一 实训目标 掌握抽象类的定义 使用 掌握运行时多态 二 知识点 抽象类的语法格式如下 : 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 点 复习 Java 包 创建包 : package 语句, 包结构与目录结构一致 使用包 : import restaurant/ - people/ - Cook.class - Waiter.class - tools/ - Fork.class - Table.class

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

模板

模板 制作人 : 张刚 目录 类和对象 面向对象程序设计基本特征 类的声明 构造方法 成员变量和方法 封装 继承 多态 包 访问控制 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

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

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

chp5_1

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

More information

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

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

More information

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

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

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

More information

OOP with Java 通知 Project 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

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

教案模板4-2

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

More information

Microsoft Word - 第5章.doc

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

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 4: 5 月 2 日晚 9 点

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

More information

Microsoft Word - 01.DOC

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

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

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

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

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

(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

Microsoft Word - 第2章.doc

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

More information

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

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

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

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

教学内容 1 2 类和对象 Java 面向对象特性

教学内容 1 2 类和对象 Java 面向对象特性 2013-2014 学年度第二学期课程 C 语言程序设计 Java 语言程序设计面向过程编程方法 编程方法学 新疆农业大学计算机与信息工程学院 陈燕红 :cyh@xjau.edu.cn 教学内容 1 2 类和对象 Java 面向对象特性 3 4 5 6 Java 程序的执行过程 经典的 Java 工具包是 JDK 可以用任何文本编辑器, 如记事本, 都可以直接编写 Java 程序然后用 JDK 的命令编译和运行.

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

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

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

More information

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

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

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

chp4

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

More information

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

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

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

Microsoft Word - 第5章.doc

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

More information

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

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

More information

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

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

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

More information

Struts2自定义类型转换.doc

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

More information

Microsoft Word - JCS5.doc

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

More information

拦截器(Interceptor)的学习

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

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

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

More information

Microsoft Word - 第3章.doc

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

More information

Guava学习之Resources

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

More information

chp6.ppt

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

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

<4D6963726F736F667420506F776572506F696E74202D20332D322E432B2BC3E6CFF2B6D4CFF3B3CCD0F2C9E8BCC6A1AAD6D8D4D8A1A2BCCCB3D0A1A2B6E0CCACBACDBEDBBACF2E707074>

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

More information

《大话设计模式》第一章

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

More information

试卷代号 : 座位号 中央广播电视大学 学年度第一学期 " 开放本科 " 期末考试 面向对象程序设计 ( 本 ) 试题 2011 年 1 月 题号 一 一 一四总分 一 分数 得分 评卷人 - 单选题, 在括号内填写正确的选项编号 { 每小题 2 分, 共

试卷代号 : 座位号 中央广播电视大学 学年度第一学期  开放本科  期末考试 面向对象程序设计 ( 本 ) 试题 2011 年 1 月 题号 一 一 一四总分 一 分数 得分 评卷人 - 单选题, 在括号内填写正确的选项编号 { 每小题 2 分, 共 试卷代号 : 1 2 9 7 座位号 中央广播电视大学 2 0 1 0 2011 学年度第一学期 " 开放本科 " 期末考试 面向对象程序设计 ( 本 ) 试题 2011 年 1 月 题号 一 一 一四总分 一 分数 得分 评卷人 - 单选题, 在括号内填写正确的选项编号 { 每小题 2 分, 共 2 0 分 } 1. Java 是一门 ( ) 语言 A. 机器 B. 汇编 C. 面向过程的高级 D.

More information

Microsoft Word - 第5章.doc

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

More information

Microsoft Word - 正文.doc

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

More information

Microsoft PowerPoint - 04-Inheritance.ppt

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

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

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

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

More information

<4D F736F F F696E74202D C DB5DA3131D5C25FBCCCB3D0BACDB6E0CCAC2E BBCE6C8DDC4A3CABD5D>

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

More information

<4D F736F F D204A617661B3CCD0F2C9E8BCC6CFB0CCE2D3EBCAB5D1B5BDCCB3CC20B5DA33D5C22E646F63>

<4D F736F F D204A617661B3CCD0F2C9E8BCC6CFB0CCE2D3EBCAB5D1B5BDCCB3CC20B5DA33D5C22E646F63> 第 3 章 类与对象 3.1 基本知识提要 3.1.1 知识结构图 类 对象 构造方法 : 构造方法重载类的定义成员方法 : 方法重载成员变量派生子类类的继承方法覆盖 super 的使用对象的声明对象的创建对象的使用 类与对象 this 的使用访问控制修饰符 : 类的访问控制修饰符 成员的访问控制修饰符 非访问控制修饰符 :static final abstract 包 : 包的定义与使用 静态导入

More information

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

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

More information

java2d-4.PDF

java2d-4.PDF 75 7 6 G r a d i e n t P a i n t B a s i c S t r o k e s e t P a i n t ( ) s e t S t o r k e ( ) import java.awt.*; import java.awt.geom.*; public class PaintingAndStroking extends ApplicationFrame { public

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

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

Microsoft PowerPoint - 07 派生数据类型

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

More information

Microsoft PowerPoint - course2.ppt

Microsoft PowerPoint - course2.ppt Java 程 式 設 計 基 礎 班 (2) 莊 坤 達 台 大 電 信 所 網 路 資 料 庫 研 究 室 Email: doug@arbor.ee.ntu.edu.tw Class 2 1 回 顧 Eclipse 使 用 入 門 Class 2 2 Lesson 2 Java 程 式 語 言 介 紹 Class 2 3 Java 基 本 知 識 介 紹 大 小 寫 有 差 (Case Sensitive)

More information

Swing-02.pdf

Swing-02.pdf 2 J B u t t o n J T e x t F i e l d J L i s t B u t t o n T e x t F i e l d L i s t J F r a m e 21 2 2 Swing C a n v a s C o m p o n e n t J B u t t o n AWT // ToolbarFrame1.java // java.awt.button //

More information

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

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

More information

Microsoft Word - 正文.doc

Microsoft Word - 正文.doc 第 5 章深入讨论类 教学要求 理解引用赋值, 类的静态成员, 重载的概念, 继承 抽象类 接口的概念, 包的作用, 访问控制修饰符的作用 掌握对象的创建与使用, 方法的定义和调用, 构造方法的使用, 方法重载的使用, 通过继承创建新类, 定义和使用接口, 使用包, 使用 import 5.1 对象的创建与销毁 面向对象程序设计的核心是对象, 程序是一系列对象的组合 单个对象能够实现的功能 是有限的,

More information

Microsoft Word - 第3章.doc

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

More information

金陵科技学院教案【封面】

金陵科技学院教案【封面】 金陵科技学院教案 第 4 5 6 次课授课学时 6 教案完成时间 :2016.2 章 节 第三章类的封装 和多态 3.1 类和对象 3.2 类的封装性 3.3 类的性 3.4 类的多态性 3.5 类的抽象性 1. 类和对象 主要内容 2. 类的封装性 性和多态性 3. 类的抽象性 目 的 与 理解面向对象的基本思想及封装性 性 多态性以及抽象性 要 求 重点 与 难点 重点 : 类的封装 多态和抽象性

More information

2 Java 语 言 程 序 设 计 教 程 1.2.1 简 单 性 Java 语 言 的 语 法 与 C 语 言 和 C++ 语 言 很 接 近, 使 得 大 多 数 程 序 员 很 容 易 学 习 和 使 用 Java 另 一 方 面,Java 丢 弃 了 C++ 中 很 少 使 用 的 很 难

2 Java 语 言 程 序 设 计 教 程 1.2.1 简 单 性 Java 语 言 的 语 法 与 C 语 言 和 C++ 语 言 很 接 近, 使 得 大 多 数 程 序 员 很 容 易 学 习 和 使 用 Java 另 一 方 面,Java 丢 弃 了 C++ 中 很 少 使 用 的 很 难 第 1 章 Java 概 述 Java 的 诞 生 Java 的 特 点 Java 开 发 环 境 安 装 与 配 置 创 建 并 运 行 一 个 简 单 的 Java 程 序 Java 语 言 是 当 今 计 算 机 软 件 行 业 中 最 热 门 的 网 络 编 程 语 言, 以 Java 为 核 心 的 芯 片 技 术 编 译 技 术 数 据 库 连 接 技 术, 以 及 基 于 企 业 级

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

利用Java技术编写桌面软件基础

利用Java技术编写桌面软件基础 利 用 Java 技 术 编 写 桌 面 软 件 基 础 在 学 习 Java 编 程 语 言 的 细 节 和 语 法 时, 我 们 会 碰 到 这 样 一 个 问 题 : 开 发 桌 面 应 用 软 件 需 要 使 用 哪 些 Java 技 术, 应 当 引 入 哪 些 package? 这 一 问 题 的 答 案 取 决 于 开 发 的 应 用 软 件 类 型 和 它 的 作 用 这 篇 文 章

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

教学内容 Java 概述 Java 程序示例 面向对象编程 4 5 6

教学内容 Java 概述 Java 程序示例 面向对象编程 4 5 6 2013-2014 学年度第二学期课程 C 语言程序设计 Java 语言程序设计面向过程编程方法 编程方法学 新疆农业大学计算机与信息工程学院 陈燕红 :cyh@xjau.edu.cn 教学内容 1 2 3 Java 概述 Java 程序示例 面向对象编程 4 5 6 暂别机器人卡雷尔 欢迎遨游 Java 世界! Java 语言的由来 Sun 公司的 Green 计划 智能家电的程序设计 资源有限

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

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

PowerPoint Presentation

PowerPoint Presentation 对象与对象的内存模型 北京理工大学计算机学院 金旭亮 对象的内存模型 对象与类的静态成员 装箱和拆箱 主要内容 提示 : 本讲以 C# 为主介绍, 但所讲内容同样适用于 Java 2 一 对象的内存模型 对象是如何 活 在内存中的? 我们如何访问内存中的这个对象? 代码中定义一个对象变量的含义是什么? 对象变量 与 对象 对象变量用于 引用 一个真实的对象 类 引用 new 对象变量 对象 对象变量保存在线程堆栈中

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

Microsoft Word - 第6章.doc

Microsoft Word - 第6章.doc 100 第 6 章 继 承 第 6 章 继 承 继 承 是 面 向 对 象 编 程 的 重 要 特 征 之 一 顾 名 思 义, 继 承 就 是 在 现 有 类 的 基 础 上 构 建 新 类 以 满 足 新 的 要 求 在 继 承 过 程 中, 新 的 类 继 承 原 来 的 方 法 和 实 例 变 量, 并 且 能 添 加 自 己 的 方 法 和 实 例 变 量 在 本 章 中 主 要 讲 解

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

untitled

untitled 1 Outline ArrayList 類 列類 串類 類 類 例 理 MSDN Library MSDN Library 量 例 參 列 [ 說 ] [] [ 索 ] [] 來 MSDN Library 了 類 類 利 F1 http://msdn.microsoft.com/library/ http://msdn.microsoft.com/library/cht/ Object object

More information

基于CDIO一体化理念的课程教学大纲设计

基于CDIO一体化理念的课程教学大纲设计 Java 语 言 程 序 设 计 课 程 教 学 大 纲 Java 语 言 程 序 设 计 课 程 教 学 大 纲 一 课 程 基 本 信 息 1. 课 程 代 码 :52001CC022 2. 课 程 名 称 :Java 语 言 程 序 设 计 3. 课 程 英 文 名 称 :Java Programming 4. 课 程 类 别 : 理 论 课 ( 含 实 验 上 机 或 实 践 ) 5. 授

More information

EJB-Programming-3.PDF

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

More information

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

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

More information

<4D F736F F F696E74202D20A1B64A617661B8DFBCB6BCBCCAF5A1B7B5DA31312E35BDB220B6AFCCACC0E0D0CDBCECB2E92E707074>

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

More information

<4D F736F F D204A617661B3CCD0F2C9E8BCC6D3EBCAB5BCF9BDCCB3CCA3A8B5DA32B0E6A3A920B5DA35D5C22E646F63>

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

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

第1章 Delphi简介

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

More information

三种方法实现Hadoop(MapReduce)全局排序(1)

三种方法实现Hadoop(MapReduce)全局排序(1) 三种方法实现 Hadoop(MapReduce) 全局排序 () 三种方法实现 Hadoop(MapReduce) 全局排序 () 我们可能会有些需求要求 MapReduce 的输出全局有序, 这里说的有序是指 Key 全局有序 但是我们知道,MapReduce 默认只是保证同一个分区内的 Key 是有序的, 但是不保证全局有序 基于此, 本文提供三种方法来对 MapReduce 的输出进行全局排序

More information

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

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

More information

幻灯片 1

幻灯片 1 信息科学技术学院 程序设计实习 郭炜微博 http://weibo.com/guoweiofpku http://blog.sina.com.cn/u/3266490431 刘家瑛微博 http://weibo.com/pkuliujiaying 1 信息科学技术学院 程序设计实习 郭炜刘家瑛 继承和派生 ( 教材 P215) 2 继承和派生的概念 继承 : 在定义一个新的类 B 时, 如果该类与某个已有的类

More information

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

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

More information

使用MapReduce读取XML文件

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

More information