JavaFX教程-類與物件
類與物件
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]
};
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/13270562/viewspace-209696/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- JavaFX教程-反射Java反射
- JavaFX教程-操作Java
- JavaFX教程-表示式Java
- 物件與類物件
- 類與物件物件
- ⦁ 類與物件物件
- Python 簡明教程 --- 19,Python 類與物件Python物件
- JavaFX教程-修改陣列Java陣列
- JavaFX教程——基本型別Java型別
- 類與物件3物件
- OC:類與物件☀️物件
- Swift:類與物件Swift物件
- JavaFX教程-更新觸發器Java觸發器
- JavaFX教程-範圍表示式Java
- JavaFX教程-查詢陣列Java陣列
- Java物件導向——類與物件Java物件
- Java-物件與類Java物件
- php.類與物件PHP物件
- Java - 11 類與物件Java物件
- 類與物件的建立物件
- 類與物件的概念物件
- JavaFX教程-字串和字串表示式Java字串
- Kotlin教程(三)類、物件和介面Kotlin物件
- python物件導向思想(類與物件)Python物件
- 【騏程】Java類與物件Java物件
- java中的類與物件Java物件
- synchronized類鎖與物件鎖synchronized物件
- 實驗2 類與物件物件
- JavaFX教程-廣度(Extents)和列舉Java
- Java語言之物件導向—類與物件(上)Java物件
- JavaFx 生成二維碼工具類封裝Java封裝
- Python基礎-類與物件Python物件
- Python中的類與物件Python物件
- 談談java的類與物件Java物件
- JavaFX教程-增量式求值和懶惰求值Java
- 課時36:類與物件:給大家介紹物件物件
- 課時38:類與物件:繼承物件繼承
- 課時39:類與物件:拾遺物件