PowerPoint Template

Size: px
Start display at page:

Download "PowerPoint Template"

Transcription

1 第五章类和继承

2 主要内容提要 创建类 管理继承 实现嵌套的类

3 创建类

4 声明类 基本语法 : <modifier> class <class_name> { [<attribute_declaration>] [<constructor_declaration>] [<method_declaration>] 上面的语法中, 关键字 class 和 class_name 是必须的, 其它都是可选的

5 类的声明 public 类是可以公共访问的 abstract 类不能被实例化 final 类不能被子类化 extends super 类的父类 implements interface 由类实现的接口

6 类体 类体中一般包含如下的内容 : 构造器 : 用于初始化类的新对象变量的声明 : 对象的状态方法的定义 : 对象的行为

7 声明成员变量 在类体中定义的变量和方法称为成员 问题 : 构造器是不是成员? accesslevel 声明成员的访问级别 static 声明一个类成员 final 声明为常量 transient 声明成员变量不应该被串行化 volatile 防止编译器在成员上执行某些优化 type name 变量的类型和名称

8 声明成员变量 accesslevel 通过指定四个访问级别 (public, protected, package, private) 之一, 可以控制哪些其它类可以访问成员变量, 对方法的访问也采用相同的方式 static 声明这是一个类变量而不是实例变量, 同样也可以用来声明类方法 final 声明这个成员的值不能修改, 相当于声明一个常量

9 声明成员变量 transient 表明成员变量不应该被串行化 volatile 防止编译器在成员上执行某种优化 type 与其它变量一样, 成员变量也必须有类型, 可以是原始类型, 也可以是引用类型 Name 成员变量的名称可以是任何合法的标志符, 成员变量不能与同一类中的其它成员变量同名

10 定义方法

11 定义方法 和类的定义一样, 方法定义有两个主要部分 : 方法声明和方法体 方法声明中必须有的成分是方法的名称, 返回类型和一对圆括号 () 下表显示方法声明可能具有的所有成分 :

12 方法声明的描述 accesslevel: 与成员变量一样, 通过四个访问级别之一, 可以控制哪些其它类可以访问此方法 static:static 声明这个方法是一个类方法, 而不是实例方法 abstract: abstract 声明这个方法是 一个抽象方法

13 方法声明的描述 final: 声明此方法不能被子类覆盖 native: 声明用其它语言实现的方法 synchronized: 声明同步的方法, 并发运行的线程常常调用在相同的数据上进行操作的方法

14 方法声明的描述 returntype: 方法必须声明它的返回值的数据类型 methodname: 方法的名称, 可以是任何合法的标志符 (paramlist): 通过方法的参数向方法传递信息 [throws exceptions]: 如果方法中抛出任何被检查的异常, 则方法的声明必须指出这些异常的类型

15 static 关键字 static 关键字用于变量, 方法和嵌套类的声明 ; static 关键字说明变量或者方法是和类相关, 而不是和某个特定的实例相关 ; static 关键字说明的变量一般称为类变量 ; static 关键字说明的方法一般称为类方法

16 类变量 被类中所有的实例分享 public class Count { private int serialnumber; public static int counter = 0; public Count() { counter++; serialnumber = counter;

17 类方法 public class Count{ private int serialnumber; private static int counter = 0; public static int gettotalcount() { return counter; public Count() { counter++; serialnumber = counter;

18 类方法 public class TestCounter { Public static void main(string[] args) { System.out.println( Number of counter is + Count.getTotalCount()); Count count1 = new Count(); System.out.println( Number of counter is + Count.getTotalCount()); 程序输出 : Output: Number of counter is 0 Number of counter is 1

19 问题? public class Count1{ private int serialnumber; private static int counter = 0; public static int gettotalcount() { return serialnumber; Compile error: Non-static variable serianumber cannot be Referenced from a static context

20 命名方法 方法的名称可以是任何合法的标志符 ; 一般约定 : 方法的名称是动词 ; 可以大小写混合, 第一个字母大写, 每个内部单词的首字母大写 例如 : tostring compareto setx getx

21 方法的命名 通常, 方法的命名在它的类中是唯一的, 但是在三种情况下, 方法和类或者子类中的其它方法同名 : 覆盖方法 ; 隐藏方法 ; 名称重载

22 覆盖方法和隐藏方法 如果子类中的一个实例方法与父类中的实例方法具有相同的标记和返回类型, 这被称为子类的方法覆盖了父类方法 ; 如果子类中的一个类方法与父类中的类方法具有相同的标记, 则子类方法隐藏父类方法 ; 具有相同的标记是指方法的名称, 参数数量和参数类型都相同

23 名称重载 Java 语言支持方法的名称重载 ; 在同一个类中的多个方法如果有不同的参数列表, 那么这些方法可以同名 public class DataArtist {... public void draw(string s) {... public void draw(int i) {... public void draw(float f) {...

24 为类提供构造器 所有类至少有一个构造器 ; 构造器用于初始化类的新对象, 由 new 操作符调用 ; 构造器与类同名 ; 构造器不是方法, 不能有返回类型 ; Java 平台支持构造器的重载 ; 为类提供构造器的时候, 应该指出构造器的意义

25 访问控制 private 只有这个类可以使用这个构造器 ; protected 只有这个类的子类和相同包中的类可以使用这个构造器 ; public 任何类都可以使用这个构造器 ; 无说明符 - 只有同一个包中的类可以使用这个构造器

26 将信息传递给方法或者构造器 在定义方法或者构造器时, 需要声明变量, 包括变量的数量和类型 ; public double computepayment(double loanamt, double rate, double futurevalue, int numperiods) { double I, partial1, denominator, answer; I = rate / 100.0; partial1 = Math.pow((1 + I), (0.0 - numperiods)); denominator = (1 - partial1) / I; answer = ((-1 * loanamt) / denominator) - ((futurevalue * partial1) / denominator); return answer;

27 参数类型 方法或者构造器中的参数可以是任何的数据类型, 包括原始类型和引用类型 ; Java 语言不允许将方法传递给方法, 但是可以将对象传递给方法, 然后调用此对象的方法

28 参数名称 参数的名称在它的作用范围内是唯一的 ; 参数不能与同一个方法或者构造器中的另一个参数同名, 也不能与同一方法中的局部变量或异常处理参数同名 ; 参数可以与类的成员变量同名, 称为参数隐藏了成员变量 public class Circle { private int x, y, radius; public void setorigin(int x, int y) {...

29 按值传递 参数是按值传递的, 当方法或者构造器被调用时, 它们接受被传递的变量的值 ; 当参数是原始类型时, 按值传递意味着方法不能修改参数的值 ; 当参数是引用类型时, 按值传递意味着方法不能改变此对象的引用, 但是可以调用对象的方法并修改对象的某些变量

30 按值传递 example1 public class Pen { private int redvalue, greenvalue, bluevalue;... //This method does not work as intended. public void getrgbcolor(int red, int green, int blue) { red = redvalue; green = greenvalue; blue = bluevalue;

31 按值传递 example2 public class RGBColor { public int red, green, blue; public class Pen { private int redvalue, greenvalue, bluevalue;... public void getrgbcolor(rgbcolor acolor) { acolor.red = redvalue; acolor.green = greenvalue; acolor.blue = bluevalue;

32 从方法返回值 定义方法时必须声明方法的返回类型, 在方法体中, 使用 return 语句返回一个值 ; 任何声明为 void 的方法都不返回值, 而且不能包含 return 语句 ; 任何声明不为 void 的方法都必须包含 return 语句

33 从方法返回值 返回值的数据类型必须匹配方法声明的返回类型 public boolean isempty() { if (items.size() == 0) { return true; else { return false;

34 从方法返回对象 方法也可以返回引用类型 ; 当方法使用一个类作为返回类型时, 返回的对象必须是返回类型指定的类或者它的子类 ; 方法的返回类型还可以是接口, 在这种情况下, 返回的对象必须实现指定的接口

35 从方法返回对象 example public Number returnanumber() {... returnanumber 方法可以返回 ImaginaryNumber, 但是不能返回

36 this 关键字 在实例方法或者构造器中,this 引用当前对象, 也就是被调用的方法或者构造器所属的对象 ; 通过 this 关键字, 可以在实例方法或者构造器中引用当前对象的任何成员 ; 主要原因是 : 方法或者构造器的参数隐藏了对象的成员变量

37 this 关键字 example public class HSBColor { private int hue, saturation, brightness; public HSBColor (int hue, int saturation, int brightness) { this.hue = hue; this.saturation = saturation; this.brightness = brightness;

38 显式构造器调用 在构造器中, 可以使用 this 关键字调用同一类中的另一个构造器, 称为显式构造器调用 ; 编译器仍然根据构造器的参数判断调用的是哪一个构造器 ; 显式构造器调用必须是构造器的第一行语句

39 显式构造器调用 example public class Rectangle { private int x, y; private int width, height; public Rectangle() { this(0, 0, 0, 0); public Rectangle(int width, int height) { this(0, 0, width, height); public Rectangle(int x, int y, int width, int height) { this.x = x; this.y = y; this.width = width; this.height = height;...

40 控制对类成员的访问 在 Java 语言中, 可以通过访问说明符控制其它类对某个类的成员变量或者方法的使用 ; Java 语言支持四个用于变量和方法的访问级别 :private,protected,public 和 package

41 访问级别 Specifier Same class Same package subclass world private X package X X protected X X X X* public X X X

42 private 用 private 修饰的变量或者方法只能被该类访问和修改 ; private 修饰符用来声明类的私有成员, 它提供了最高的保护级别 ; private 就象个人私有的秘密

43 protected 用 protected 说明的变量或者方法可以被三种类引用 : 同一类 ; 子类 ; 在同一个包中的其它类 protected 修饰的成员就象家庭的秘密

44 package package 也称为缺省访问控制符, 说明它具有缺省的访问控制特性 ; package 说明该类只能被同一个包中的类访问和修改 Package 修饰的成员类似于朋友间的秘密

45 public public 声明的类, 可以被所有的其它类访问和引用, 也就是公共的 ; public 修饰符意味着公共的, 没有秘密

46 example

47 example package One; public class Alpha { //member variables private int iamprivate = 1; int iampackage = 2; //package access protected int iamprotected = 3; public int iampublic = 4; //methods private void privatemethod() { System.out.println("iamprivate Method"); void packagemethod() { //package access System.out.println("iampackage Method"); protected void protectedmethod() { System.out.println( iamprotected Method );

48 example public void publicmethod() { System.out.println("iampublic Method"); public static void main(string[] args) { Alpha a = new Alpha(); 程序的输出结果 : a.privatemethod(); iamprivate Method //legal a.packagemethod(); iampackage//legal Method a.protectedmethod(); iamprotected//legal Method a.publicmethod(); iampublic Method //legal System.out.println("iamprivate: iamprivate: " + a.iamprivate); 1 //legal System.out.println("iampackage: iampackage: " + a.iampackage); 2 //legal System.out.println("iamprotected: iamprotected: " + a.iamprotected); 3 //legal System.out.println("iampublic: iampublic: " + a.iampublic); 4 //legal

49 example package One; public class Alpha {... public boolean isequalto(alpha anotheralpha) { if (this.iamprivate == anotheralpha.iamprivate) { //legal return true; else { return false; 具有相同类型的对象可以访问彼此的私有成员? 因为访问控制是在 class 级别的, 而不是在对象级别, 特别是同一类中的实例

50 example package One; public class DeltaOne { public static void main(string[] args) { Alpha a = new Alpha(); //a.privatemethod(); //illegal a.packagemethod(); //legal 程序的输出结果 : a.protectedmethod(); //legal iampackage Method a.publicmethod(); //legaliamprotected Method //System.out.println("iamprivate: iampublic " + a.iamprivate); Method //illegal System.out.println("iampackage: iampackage: " + a.iampackage); 2 //legal System.out.println("iamprotected: iamprotected: " + a.iamprotected); 3 //legal iampublic: 4 System.out.println("iampublic: " + a.iampublic); //legal The next class, AlphaTwo,2

51 example package Two; import One.*; public class AlphaTwo extends Alpha { public static void main(string[] args) { Alpha a = new Alpha(); //a.privatemethod(); //illegal //a.packagemethod(); //illegal 程序的输出结果 : iampublic Method //a.protectedmethod(); //illegal a.publicmethod(); //legal iampublic: 4 //System.out.println("iamprivate: iamprotected " + a.iamprivate); Method //illegal iamprotected: 3 //System.out.println("iampackage: " + a.iampackage); //illegal //System.out.println("iamprotected: " + a.iamprotected); //illegal System.out.println("iampublic: " + a.iampublic); //legal AlphaTwo a2 = new AlphaTwo(); a2.protectedmethod(); //legal System.out.println("iamprotected: " + a2.iamprotected); //legal

52 example package Two; import One.*; public class DeltaTwo { public static void main(string[] args) { Alpha alpha = new Alpha(); //alpha.privatemethod(); //illegal //alpha.packagemethod(); //illegal //alpha.protectedmethod(); //illegal alpha.publicmethod(); //legal 程序输出结果 : iampublic Method iampublic: 4 //System.out.println("iamprivate: " + a.iamprivate); //illegal //System.out.println("iampackage: " + a.iampackage); //illegal //System.out.println("iamprotected: " + a.iamprotected); //illegal System.out.println("iampublic: " + a.iampublic); //legal

53 实例和类成员 public class AClass { public int instanceinteger = 0; public int instancemethod() { return instanceinteger; public static int classinteger = 0; public static int classmethod() { return classinteger; public static void main(string[] args) { AClass aninstance = new AClass(); AClass anotherinstance = new AClass(); aninstance.instanceinteger = 1; anotherinstance.instanceinteger = 2; System.out.println(anInstance.instanceMethod()); System.out.println(anotherInstance.instanceMethod());

54 实例和类成员 //System.out.println(instanceMethod()); //illegal //System.out.println(instanceInteger); //illegal //Refer to class members through the class... AClass.classInteger = 7; System.out.println(classMethod()); 程序输出 : //...or through an instance. 1 System.out.println(anInstance.classMethod()); 2 //Instances share class variables 7 aninstance.classinteger = 9; 7 System.out.println(anInstance.classMethod()); 9 System.out.println(anotherInstance.classMethod()); 9

55 实例成员 除非另外声明, 类中声明的成员就是实例成员 ; 运行时系统为程序的每个实例创建每个实例变量的拷贝 ; 只能通过对实例的引用访问实例成员和调用实例方法

56 类成员 类成员是通过 static 修饰符声明的, 运行时系统为每个类分配一个类变量, 而不管创建了多少个这个类的实例 这个类的所有实例共享这个类的类变量的相同拷贝, 即可以通过实例也可以通过类本身访问变量 相同的, 即可以通过类, 也可以通过实例引用来访问类方法 注意 : 当程序修改类变量的值时, 此修改对所有实例有效

57 类成员和实例成员

58 实例方法和类方法 实例方法可以访问当前对象的实例变量, 也可以访问类变量 ; 类的所有实例将分享实例方法的实现 ; 类方法不能访问实例变量 ; 类方法可以在类中直接引用, 不需要通过实例来引用类方法

59 实例和类成员的初始化 可以在类成员变量或者实例成员变量的声明中进行初始化 ; 例如 : class BedAndBreakfast { static final int MAX_CAPACITY = 10; boolean full = false;

60 初始化的限制 必须以一个赋值语句表达初始化方式 ; 初始化表达式不能调用任何被声明为抛出非运行时异常的方法 ; 如果初始化表达式调用一个抛出时异常的方法, 那么它不能进行错误恢复

61 使用静态初始化块 import java.util.resourcebundle; class Errors { static ResourceBundle errorstrings; static { try { errorstrings = ResourceBundle.getBundle("ErrorStrings"); catch (java.util.missingresourceexception e) { // error recovery code here

62 使用静态初始化块 errorstrings 资源绑定必须在一个静态初始化块中初始化, 这是因为如果找不到绑定,getBundle 方法可以抛出一个异常, 代码应该执行错误恢复 errorstrings 是一个类成员, 所以它不能在构造器中进行初始化 ; 静态初始化块以 static 关键字开头, 然后是封闭在 { 中间的代码 类可以有任意数量的静态初始化块, 静态初始化块可以出现在类体中任何位置 ; 运行时系统确保静态初始化块和静态初始化器按它们在源代码中出现的次序调用

63 初始化实例成员 import java.util.resourcebundle; class Errors { ResourceBundle errorstrings; Errors() { try { errorstrings = ResourceBundle.getBundle("ErrorStrings"); catch (java.util.missingresourceexception e) { // error recovery code here 对于实例变量的初始化, 可以将初始化代码放在类的构造器中

64 问题 public class IdentifyMyParts { public static int x = 7; public int y = 3; IdentifyMyParts 类包含多少个类变量? 名称是什么? IdentifyMyParts 类包含多少个实例变量? 名称是什么?

65 问题 IdentifyMyParts a = new IdentifyMyParts(); IdentifyMyParts b = new IdentifyMyParts(); a.y = 5; b.y = 6; a.x = 1; b.x = 2; System.out.println("a.y = " + a.y); System.out.println("b.y = " + b.y); System.out.println("a.x = " + a.x); System.out.println("b.x = " + b.x); 以上代码的输出是什么? 程序输出结果 : a.y=5 b.y=6 a.x=2 b.x=2

66 管理继承 在 Java 语言中, 每个类只能有一个直接父类 ; Object 类在 java.lang 中定义

67 类的层次结构 在 Java 语言中,Object 类是所有类中最一般化的类 ; Object 类定义并且实现了每个类都需要的行为 ; 从 Object 类派生了许多类, 从这些类又派生了许多类, 从而构成了一个类层次结构

68 类的层次结构 在这个类层次结构的顶层,Object 类是所有类中最一般化的类 ; 越接近这个层次结构底部的类提供越特殊化的行为 ; 越接近这个层次结构顶部的类提供越共性的行为 : 子类从另一个类派生出来 ; 父类指一个类的直接祖先或者它的任何祖先类 ; 每个类有且只有一个直接父类

69 类的层次结构 子类从它的父类继承了所有的成员变量和方法 ; 子类可能不能访问继承的成员变量或者方法 ; 注意 : 构造器不是成员, 所以不能被子类继承

70 继承成员 子类从父类中继承声明为 public 或者 protected 的成员 ; 子类如果和父类在同一个 package 中, 则子类从父类中继承声明为 package 或者没有修饰符的成员 ; 如果子类中声明的成员名和父类中的成员名相同的话, 则子类不继承这个成员名

71 隐藏成员变量 子类中的成员变量隐藏父类中的同名变量 ; 在为成员变量命名的时候, 需要小心只隐藏需要隐藏的成员变量 ; 在 Java 语言中, 需要注意的是可以通过父类访问被隐藏的成员变量

72 覆盖方法 如果子类中的一个实例方法与父类中的一个实例方法具有相同的名称和返回类型, 就称为子类方法覆盖了父类方法 子类可以从父类中继承方法, 同时按照要求进行修改 进行覆盖的方法与它所覆盖的方法具有相同的名称, 参数数量和类型以及返回类型 覆盖方法的访问说明符允许的访问可以比被覆盖的方法多, 但是不能少

73 example public class Employee{ protected String name; protected double salary; protected Data birthdate; public String getdetails() { return name: + name + \n + salary: + salary; public class Manager extends Employee{ protected String department; public String getdetails() { return name: + name + \n + salary: + salary + \n + manager of: + department;

74 重载方法 Java 编程语言允许通过改变方法参数的数量和类型来重载方法, 也可以重载父类中的方法 在编写与父类方法同名的方法时, 一定要注意检查返回类型和参数列表, 确保正确的重载或者覆盖

75 重载方法 public class MyClass { private int anint = 4; //Overrides tostring in Object class. public String tostring() { return "Instance of MyClass. anint = " + anint; //Overloads tostring method name to provide additional functionality. public String tostring(string prefix) { return prefix + ": " + tostring();

76 隐藏方法 如果子类中定义的类方法与父类中的类方法具有相同的标记, 就称为子类方法隐藏了父类方法 下面来看看覆盖和隐藏的区别 :

77 example public class Planet { public static void hide() { System.out.println("The hide method in Planet."); public void override() { System.out.println("The override method in Planet.");

78 example public class Earth extends Planet { public static void hide() { System.out.println("The hide method in Earth."); public void override() { System.out.println("The override method in Earth."); public static void main(string[] args) { Earth myearth = new Earth(); Planet myplanet = (Planet)myEarth; myplanet.hide(); myplanet.override(); 程序输出结果 : The hide method in Planet. The override method in Earth.

79 方法的覆盖和方法的隐藏 实例方法不能覆盖静态方法 ; 静态方法不能隐藏实例方法

80 子类不能覆盖的方法 子类不能覆盖父类中被声明为 final 的方法 ; 如果试图覆盖 final 方法, 则编译器会报错 子类不能覆盖父类中的类方法

81 子类必须覆盖的方法 子类必须覆盖父类中声明为 abstract 的方法 ; 否则子类本身必须是抽象的

82 隐藏成员变量 在类中, 如果一个成员变量和父类中的成员变量同名, 即使类型不同, 那么子类中的成员隐藏父类中的成员 在子类中, 不能通过简单名称引用父类中的成员变量, 必须通过 super 关键字

83 super 关键字 如果父类中的成员变量被隐藏, 需要使用 super 关键字来引用 ; 同样, 如果子类方法覆盖了父类方法, 也需要使用 super 关键字来引用 ; 例如 : super.overriddenmethodname();

84 example public class Superclass { public boolean avariable; public void amethod() { avariable = true; 程序输出结果 : false public class Subclass extends Superclass { public boolean avariable; //hides avariable in Superclass true public void amethod() { //overrides amethod in Superclass avariable = false; super.amethod(); System.out.println(aVariable); System.out.println(super.aVariable);

85 调用父类的构造器 在子类构造器中使用 super 调用父类的构造器 ; 如果存在显式的父类构造器调用, 则必须是子类构造器中的第一个语句 ; 如果构造器没有显式调用父类构造器, 那么 Java 运行时系统在执行此构造器中的任何语句之前自动调用父类的无参数构造器

86 example class AnimationThread extends Thread { int framespersecond; int numimages; Image[] images; AnimationThread(int fps, int num) { super("animationthread"); this.framespersecond = fps; this.numimages = num; this.images = new Image[numImages]; for (int i = 0; i <= numimages; i++) {... // Load all the images

87 使用 Object 的后代 Object 类位于类层次结构的顶端, 每个类都是 Object 类的直接或者间接后代 ; Object 类定义了所有类都必须有的基本状态和行为 : clone equals and hashcode finalize tostring getclass notify, notifyall, and wait

88 覆盖 Object 方法 Object 类中的这些方法声明为 final, 子类不可以覆盖这些方法 : getclass notify notifyall wait

89 clone 方法 使用 clone 方法从一个现有的对象创建一个对象 ; acloneableobject.clone(); Object 对这个方法的实现检查当前对象是否实现了 Cloneable 接口, 如果此对象没有实现 Cloneable 接口, 那么此方法抛出一个 CloneNotSupportedException 异常 使用 clone 最简单的方法是 : 在类的声明中添加 implements Cloneable

90 equals and hashcode 方法 equals 方法比较两个对象是否相等, 如果相等则返回 true; hashcode 方法返回的是值是一个 int, 它将对象映射到散列表中的存储桶, 一个对象必须总是产生相同的散列编码

91 finalize 方法 finalize 方法在对象被垃圾收集器收集前清楚对象 ; 系统自动调用 finalize 方法, 而且大多数类不需要覆盖它

92 getclass 方法 getclass 方法返回一个对象的类的运行时表示 ; 这个方法返回一个 Class 对象 ; 通过这个对象查询关于这个类的信息, 包括它的名称, 它的父类以及接口的信息等 void PrintClassName(Object obj) { System.out.println("The Object's class is " + obj.getclass().getname());

93 tostring 方法 tostring 方法返回对象的字符串表示 ; 可以使用 tostring 方法和 System.out.println 显示对象

94 final 关键字 不能子类化一个 final class; 不能覆盖一个 final method; 声明为 final 的变量是常量的概念 ; 如果一个引用类型的变量声明为 final, 将出现什么问题?

95 final class 通过防止系统被改版来提高系统安全性, 要防止这种破坏, 可以将类声明为 final, 由此防止创建任何子类 ; 为了实现优良的面向对象程序设计, 例如 : final class ChessAlgorithm{

96 final 方法 如果将整个类声明为 final 超出了需要, 可以将类的某些方法或者全部方法声明为 final; 在方法声明中使用 final 关键字标志这个方法不能被子类覆盖 ; 如果一个方法的实现不应该被修改, 而且对于保持对象的一致状态很重要, 则声明为 final 方法

97 抽象类 有时定义的类表示一个抽象概念, 这样的类不应该被实例化 ; 将类声明为抽象类的办法是 : 在声明中的 class 关键字前使用 abstract 关键字, 如果试图对抽象类进行实例化, 编译器会显示错误信息, 例如 : abstract class Number {

98 抽象方法 抽象类可以包含抽象方法, 即没有实现的方法 ; 抽象类可以以这种方式为它的子类定义一个完整的编程接口, 而且允许它的子类填充这些方法的实现细节 ; 抽象类应该提供至少一个方法的完整实现或者部分实现 ; 如果抽象类只包含抽象方法的声明, 那么它应该实现为接口

99 example 在一个面向对象的绘图应用程序中, 可以绘制圆 矩形和直线等, 这些图形对象都有某些状态和行为, 可以利用这种相似性, 将它们声明为同一个父对象继承这些状态和行为

100 example abstract class GraphicObject { int x, y;... void moveto(int newx, int newy) {... abstract void draw();{ 抽象类不必包含抽象方法 ; class Circle extends GraphicObject { void draw() {... class Rectangle extends GraphicObject { void draw() { 如果一个类包含抽象方法, 或者没有为它的父类... 实现抽象方法, 这个类必须声明为抽象类

101 example 这个例子是计算公司的交通工具的消耗 : public abstract class Vehicle { public abstract double calcufuelefficiency(); public abstract double calctripdistance(); public class class Truck RiverBarge extends extends Vehicle Vehicle { { public public Truck(double RiverBarge(double max_load) max_load) { { public public double calcfuelefficiency() { { // calculate /* calculate the fuel the consumption fuel consumption of a truck of a at river a given barge load at a given load*/ public public double double calctripdistance() { { // calculate /* calculate the distance the distance of this of trip this on trip highway on river-ways */

102 问题 public class ClassA { public void methodone(int i) { public void methodtwo(int i) { public static void methodthree(int i) { public static void methodfour(int i) { public class ClassB extends ClassA { public static void methodone(int i) { public void methodtwo(int i) { public void methodthree(int i) { public static void methodfour(int i) { 哪些方法覆盖了父类中的方法? 哪些方法隐藏了父类中的方法? 其它方法做什么事情?

103 实现嵌套的类 可以定义一个类为另一个类的成员, 这样的类称为嵌套的类 定义 : 嵌套类是另一个的成员 class EnclosingClass {... class ANestedClass {...

104 example public class Outer1 { private int size; public class Inner { public void dostuff() { size ++; public void testtheinner() { Inner i = new Inner(); i.dostuff();

105 嵌套类的作用 使用嵌套类来反映并实施两个类之间的关系 ; 当嵌套类只在包含它的类中有意义时, 或者它依赖于包含它的类来实现功能时 例如 : 文本形状的光标, 只有在文本编缉时才有用 ; 存盘, 只有在文件打开的情况下才有用 嵌套类可以访问包含它的类的成员, 即使这些成员是私有的

106 嵌套类的分类 class EnclosingClass {... static class StaticNestedClass {... class InnerClass {... 嵌套类可以声明为静态的或者非静态的 ; 有 static 修饰符说明的称为静态的嵌套类 ; 无 static 修饰符说明的称为内部类

107 嵌套类的特点 静态的嵌套类与包含它的类相关联 ; 静态的嵌套类不能直接引用包含它的类中定义的实例变量或者实例方法, 只能通过对象来引用 ; 内部类与包含它的类的实例相关联, 可以直接访问此对象的实例变量和实例方法 ; 内部类因为和实例相关联, 所以它不能定义任何静态成员

108 两者的区别 静态的嵌套类反映两个类之间的句法关系, 即在句法上一个类的代码出现在另一个类的代码内 内部类反映两个类的实例之间的关系

109 嵌套类的其它问题 嵌套类可以声明为 abstract 或者 final; 可以使用访问说明符来限制对嵌套类的访问 ; 任何嵌套类都可以在任何代码块中声明, 包括在方法体中声明

110 欢迎提问

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

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

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

无类继承.key

无类继承.key 无类继承 JavaScript 面向对象的根基 周爱 民 / aimingoo aiming@gmail.com https://aimingoo.github.io https://github.com/aimingoo rand = new Person("Rand McKinnon",... https://docs.oracle.com/cd/e19957-01/816-6408-10/object.htm#1193255

More information

OOP with Java 通知 Project 3 提交时间 3 月 29 日晚 9 点 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

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

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

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

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

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

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

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

chp5_1

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

More information

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

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

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

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

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 - 01.DOC

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

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

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

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

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

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

chp6.ppt

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

More information

3.1 num = 3 ch = 'C' 2

3.1 num = 3 ch = 'C' 2 Java 1 3.1 num = 3 ch = 'C' 2 final 3.1 final : final final double PI=3.1415926; 3 3.2 4 int 3.2 (long int) (int) (short int) (byte) short sum; // sum 5 3.2 Java int long num=32967359818l; C:\java\app3_2.java:6:

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

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

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

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

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

More information

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

More information

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

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

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

《大话设计模式》第一章

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

More information

Guava学习之Resources

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

More information

Microsoft Word - 第2章.doc

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

More information

Microsoft PowerPoint - 07 派生数据类型

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

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

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

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

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

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

Strings

Strings Polymorphism and Virtual Functions Cheng-Chin Chiang Virtual Function Basics 多 型 (Polymorphism) 賦 予 一 個 函 數 多 種 意 涵, 存 在 於 同 一 類 別 之 內 祖 先 類 別 與 後 代 類 別 間 物 件 導 向 程 式 設 計 基 本 原 理 虛 擬 函 數 (Virtual Function)

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

Microsoft Word - 物件導向編程精要.doc

Microsoft Word - 物件導向編程精要.doc Essential Object-Oriented Programming Josh Ko 2007.03.11 object-oriented programming C++ Java OO class object OOP Ruby duck typing complexity abstraction paradigm objects objects model object-oriented

More information

untitled

untitled 1 行 行 行 行.NET 行 行 類 來 行 行 Thread 類 行 System.Threading 來 類 Thread 類 (1) public Thread(ThreadStart start ); Name 行 IsAlive 行 行狀 Start 行 行 Suspend 行 Resume 行 行 Thread 類 (2) Sleep 行 CurrentThread 行 ThreadStart

More information

Microsoft Word - 第5章.doc

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

More information

<4D6963726F736F667420506F776572506F696E74202D20B5DA3035D5C220C3E6CFF2B6D4CFF3B8DFBCB6B3CCD0F2C9E8BCC6>

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

More information

教案模板4-2

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

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

chp4

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

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

Microsoft Word - word模板-教师.doc

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

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

RunPC2_.doc

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

More information

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

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

More information

The Embedded computing platform

The Embedded computing platform 嵌入式系統及實驗 Embedded System and Experiment 詹曉龍 長庚大學電機系 Java 的類別與物件 : 宣告類別 建構子 public class Customer { private String name; private String address; // Customer 類別宣告 // 成員資料 public int age; // 建構子 : 使用參數設定成員資料初始值

More information

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

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

More information

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

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

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

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

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

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

使用MapReduce读取XML文件

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

More information

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

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

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

在 ongodb 中实现强事务

在 ongodb 中实现强事务 在 ongodb 中实现强事务 600+ employees 2,000+ customers 13 offices worldwide 15,000,000+ Downloads RANK DBMS MODEL SCORE GROWTH (20 MO) 1. Oracle Rela+onal DBMS 1,442-5% 2. MySQL Rela+onal DBMS 1,294 2% 3.

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

Adobe® Flash® 的 Adobe® ActionScript® 3.0 程式設計

Adobe® Flash® 的 Adobe® ActionScript® 3.0 程式設計 337 18 Adobe Flash CS4 Professional MovieClip ActionScript Flash ActionScript Flash Flash Flash MovieClip MovieClip ActionScript ( ) MovieClip Flash Sprite ActionScript MovieClip ActionScript 3.0 Shape

More information

基于ECO的UML模型驱动的数据库应用开发1.doc

基于ECO的UML模型驱动的数据库应用开发1.doc ECO UML () Object RDBMS Mapping.Net Framework Java C# RAD DataSetOleDbConnection DataGrod RAD Client/Server RAD RAD DataReader["Spell"].ToString() AObj.XXX bug sql UML OR Mapping RAD Lazy load round trip

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

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

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

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

<4D6963726F736F667420506F776572506F696E74202D20332D322E432B2BC3E6CFF2B6D4CFF3B3CCD0F2C9E8BCC6A1AAD6D8D4D8A1A2BCCCB3D0A1A2B6E0CCACBACDBEDBBACF2E707074>

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

More information

<4D F736F F D204A617661B3CCD0F2C9E8BCC6D3EBCAB5BCF9BDCCB3CCA3A8B5DA32B0E6A3A920B5DA35D5C22E646F63>

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

More information

任務二 : 產生 20 個有炸彈的磚塊, 放在隨機的位置編輯 Block 類別的程式碼 import greenfoot.; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) Write a description of class

任務二 : 產生 20 個有炸彈的磚塊, 放在隨機的位置編輯 Block 類別的程式碼 import greenfoot.; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) Write a description of class 踩地雷遊戲 高慧君南港高中 開啟專案 MineSweep 任務一 : 產生 30X20 個磚塊編輯 Table 類別的程式碼 import greenfoot.; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) import java.util.arraylist; Write a description of class MyWorld

More information

untitled

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

More information

Microsoft Word - JCS5.doc

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

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

拦截器(Interceptor)的学习

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

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

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

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

More information

Learning Java

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

More information

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

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

<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

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

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

More information

Microsoft Word - chap10.doc

Microsoft Word - chap10.doc 78 10. Inheritance in C++ 我 們 已 介 紹 了 物 件 導 向 程 式 的 第 一 個 主 要 特 性, 即 程 式 可 模 組 化 成 為 類 別 ( 物 件 ), 類 別 具 有 資 料 封 裝 的 特 性 接 下 來 我 們 要 介 紹 物 件 導 向 程 式 的 另 一 個 主 要 特 性, 那 就 是 類 別 具 有 繼 承 的 功 能 繼 承 就 是 重 複

More information

<4D F736F F F696E74202D20B8DFBCB6D3C3BBA7BDE7C3E6D3EBB6E0CFDFB3CC2E707074>

<4D F736F F F696E74202D20B8DFBCB6D3C3BBA7BDE7C3E6D3EBB6E0CFDFB3CC2E707074> 高级用户界面与多线程 LCDUI 高级 LCDUI LCDUI 与多线程 多线程在手机编程中尤为重要 手机游戏开发中, 通常由游戏主线程负责游戏的基本控制, 除此之外还会由一个或者多个线程用于播放背景音乐或声效 网络接受数据时, 传输速度通常都比较慢, 因此可以使用一个独立的线程负责接收数据, 另外一个线程负责 UI 界面和与用户的交互 LCDUI 与多线程 J2ME 是通过线程体来实现多线程的 线程体就是用于实现线程活动的主体,

More information

授课内容 内容 备注 第 4 章接口 内部类和 Java API 基础内容和要求 : 1. 理解接口的作用, 理解接口和实现接口的类的关系, 掌握声明接口 重点 : 接口和实现接口的一个类实现多个接口的声明和使用方法 类 ;Java API 2. 理解内嵌类型的概念, 掌握声明内部类的方法 难点 :

授课内容 内容 备注 第 4 章接口 内部类和 Java API 基础内容和要求 : 1. 理解接口的作用, 理解接口和实现接口的类的关系, 掌握声明接口 重点 : 接口和实现接口的一个类实现多个接口的声明和使用方法 类 ;Java API 2. 理解内嵌类型的概念, 掌握声明内部类的方法 难点 : 金陵科技学院教案 第 7 次课授课学时 2 教案完成时间 : 2014.2 章 节 第四章接口 内部类和 Java API 基础 4-1 接口与实现接口的类 4-2 内部类和内部接口 4-3 Java API 基础 4-4 泛型 ( 简单介绍, 不深入学习 ) 1. 接口与实现接口的类 主要内容 2. 内部类和内部接口 3. Java API 基础 目的与要求 1. 理解接口的作用, 理解接口和实现接口的类的关系,

More information

RxJava

RxJava RxJava By 侦跃 & @hi 头 hi RxJava 扩展的观察者模式 处 观察者模式 Observable 发出事件 Subscriber 订阅事件 bus.post(new AnswerEvent(42)); @Subscribe public void onanswer(answerevent event) {! }! Observable observable = Observable.create(new

More information

RUN_PC連載_10_.doc

RUN_PC連載_10_.doc PowerBuilder 8 (10) Jaguar CTS ASP Jaguar CTS PowerDynamo Jaguar CTS Microsoft ASP (Active Server Pages) ASP Jaguar CTS ASP Jaguar CTS ASP Jaguar CTS ASP Jaguar CTS ASP Jaguar CTS ASP Jaguar Server ASP

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

Microsoft Word - 第5章.doc

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

More information