JavaFX教程-类与对象

ZDNet软件频道 时间:2008-08-02 作者: |  我要评论()
本文关键词:对象 JavaFX 软件
JavaFX中声明类的语法:在class关键字后面跟着类名,接着是可选的extends关键字和由逗号分割的基类名列表.

对象
JavaFX中声明的语法:在class关键字后面跟着名,接着是可选的extends关键字和由逗号分割的基名列表,一个开放的大括号(),在大括号中间的每一个语法逻辑行都使用分号结尾。

例如:

 class Person {
  attribute name: String;
  attribute parent: Person inverse Person.children;
  attribute children: Person* inverse Person.parent;
  function getFamilyIncome(): Number;
  function getNumberOfChildren(): Number;
  operation marry(spouse: Person);
 }
属性的声明方式:attribute关键字后面跟着属性名,一个冒号,属性型,可选的重数(cardinality)说明(?代表不确定,*代表零个或者更多,+代表一个或者更多),一个可选的、用来说明与中另一属性之间双向关系的反向子句(inverse clause),并使用分号结束。

 attribute AttributeName : AttributeType Cardinality inverse ClassName.InverseAttributeName;
如果反向子句出现在对象属性定义中,那么当此属性值被修改时JavaFX解释器将自动更新其反向属性(根据更新的型和属性的重数进行插入、删除或者替换)。

多值属性(例如那些使用*或者+重数描述符声明的属性)被表示为数组,并能够通过[]操作符访问,并使用insert和delete操作符更新。

和Java方法不同,所有的JavaFX成员操作体和成员函数体都被定义在声明外部,例如:

 function Person.getNumberOfChildren() {
  return sizeof this.children;
 }
声明中对操作和函数的声明都需要对参数和返回值型进行声明,而在操作体和函数体的具体定义中则可被忽略。

 

属性声明
JavaFX中可以声明属性的初始值。在新建对象上下文中的初始化程序按照声明顺序被逐一求值(见下例的粗体部分):

 import java.lang.System;

 class X {
  attribute a: Number;
  attribute b: Number;
 }

 attribute X.a = 10;
 attribute X.b = -1;

 var x = new X();
 System.out.println(x.a); // prints 10
 System.out.println(x.b); // prints -1
还可以通过bind操作将增量式求值表达式(incrementally evaluated expression)声明为属性值:

 import java.lang.System;

 class X {
  attribute a: Number;
  attribute b: Number;
  attribute c: Number;
 }

 attribute X.a = 10;

 attribute X.b = bind a + 10;
 attribute X.c = bind lazy b + 10;


 var x = new X();
 System.out.println(x.a); // prints 10
 System.out.println(x.b); // prints 20
 System.out.println(x.c); // prints 30
 x.a = 5;
 System.out.println(x.a); // prints 5
 System.out.println(x.b); // prints 15
 System.out.println(x.c); // prints 25


对象声明
JavaFX使用由名、用大括号包含的属性初始化程序列表构成的说明性语法来完成对象的初始化。每个初始化程序由属性名、冒号、定义属性值的表达式(JavaFX也支持在上下文中进行增量式求值,详见下面的章节)构成:

  var chris = Person {
  name: "Chris"
  children:
  [Person {
   name: "Dee"
  },
  Person {
   name: "Candice"
  }]
 };
JavaFX也支持Java对象的初始化语法。你可以象在Java中一样传递参数给构造器:

 import java.util.Date;
 import java.lang.System;

 var date1 = new Date(95, 4, 23); // call a java constructor
 var date2 = Date { // create the same date as an object literal
  month: 4
  date: 23
  year: 95
 };
 System.out.println(date1 == date2);  // prints true
JavaFX允许在对象中声明本地变量。这些变量只在对象本身的范围内可见。另外,一个引用被初始化对象的变量可以通过var关键字声明为假属性(pseudo-attribute),就如下例中的child1和child2一样:

 var chris = Person {
  var: me
  name: "Chris"
  var child1 = Person {
   name: "Dee"
   parent: me
  }
  var child2 = Person { name: "Candice" }
  children: [child1, child2]
 };

对象

JavaFX

软件


百度大联盟认证黄金会员Copyright© 1997- CNET Networks 版权所有。 ZDNet 是CNET Networks公司注册服务商标。
中华人民共和国电信与信息服务业务经营许可证编号:京ICP证010391号 京ICP备09041801号-159
京公网安备:1101082134