物件

摘要:物件

JAVA FX的物件觀念其實和JAVA很像,為了要產生物件,當然要有物件的模板【類別】,下面就是【地址類別】的長相

public class Address {
    public var street: String;
    public var city: String;
    public var state: String;
    public var zip: String;
}

接下來要產生一個地址物件,並將物件的屬性初始化,然後調用這個物件的屬性值

var myAddress = Address {
            street: "1 Main Street";
            city: "Santa Clara";
            state: "CA";
            zip: "95050";
        }

println(myAddress.city);
println(myAddress.state);
println(myAddress.street);
println(myAddress.zip);

輸出結果

Santa Clara
CA
1 Main Street
95050

官方的範例之中有一個叫做【巢狀】物件,其實就是物件中某一個屬性的型別是一種物件,如以下範例,客戶物件的其中一個屬性是地址物件。

var customer = Customer {
            firstName: "John";
            lastName: "Doe";
            phoneNum: "(408) 555-0101";
            address: Address {
                street: "1 Main Street";
                city: "Santa Clara";
                state: "CAdd";
                zip: "9505";
            }
        }

println(customer.address.city);
println(customer.address.state);
println(customer.address.street);
println(customer.address.zip);
輸出結果
Santa Clara
CAdd
1 Main Street
9505

另外看一個好玩的物件參照的問題,請注意以下範例,我先宣告了一個【customer1】的物件,然後再宣告一個【customer2】的物件參照到 【customer1】,接著我將【customer1】的firstname屬性改掉,看一下輸出的【customer2】物件的firstname屬 性也跟著改掉了

var customer1 = Customer {
            firstName: "John1";
            lastName: "Doe1";
            phoneNum: "111-1111";
            address: Address {
                street: "1 Main Street";
                city: "Santa Clara";
                state: "CAdd";
                zip: "9505";
            }
        }
var customer2 = customer1;
println(customer2.firstName);

customer1.firstName = "John2";

println(customer2.firstName);
輸出結果
John1    //第一次輸出的firstname屬性
John2    //第二次輸出的firstname屬性